Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Yoel Alejandro en 4 Marzo 2014, 19:02 PM

Título: Para entender el algoritmo de inserción
Publicado por: Yoel Alejandro en 4 Marzo 2014, 19:02 PM
En esta ocasión quiero compartir un programita divertido que muestra de manera interactiva la ejecución del algoritmo de ordenamiento por inserción. Básicamente va ordenando el arreglo e indicando por pantalla lo que va haciendo: cómo se mueven los elementos y cómo va quedando el vector tras cada paso ....

Un programita amigable y con un propósito bien didáctivo .... enjoy it!!

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
 
#define N 5
 
int main(void) {

int x[N] = {7, 3, 11, 5, 1};
int i, j, k;
int aux;

printf("Arreglo original: \n");
for (k = 0; k < N; k++)
printf(" %d", x[k]);
printf("\n");

for (i = 1; i < N; i++) {

/* buscamos desde 0 hasta i - 1, el primer elemento que sea
* mayor que x[i] */
printf("ubicando %d ...", x[i]);
j = 0;
while (j < i && x[j] <= x[i])
j++;

if ( j < i ) {

/* insertar x[i] en la posición j, y desplazar los
* restantes elementos hacia la derecha */
printf(" poner en posicion %d\n", j);

for (k = 0; k < N; k++)
printf(" %d", x[k]);
printf("  -> ");

aux = x[i];
for (k = i; k > j; k--)
x[k] = x[k-1];
x[j] = aux;

for (k = 0; k < N; k++)
printf(" %d", x[k]);
printf("\n");
}
else
printf(" sin cambios\n");
}
printf("El arreglo final ordenado es:\n");
for (i = 0; i < N; i++)
printf(" %d", x[i]);
printf("\n");

return 0;
}