Un programita amigable y con un propósito bien didáctivo .... enjoy it!!
Código
#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; }