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!!
#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;
}