Para entender el algoritmo de inserción

Iniciado por Yoel Alejandro, 4 Marzo 2014, 19:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Yoel Alejandro

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;
}
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)