// http://www.programmingsimplified.com/c/source-code/c-program-insertion-sort
// https://en.wikipedia.org/wiki/Insertion_sort
/* insertion sort ascending order */
 
#include <stdio.h>

#define MIDA	100

int main()
{
	int n, v[MIDA], i, j, k, elem;

	printf("Numero de elementos\n"); // 8
	scanf("%d", &n);
	printf("Intro %d enteros\n", n); // 6 5 3 1 8 7 2 4
	for (i=0;i<n;i++) {
		scanf("%d", &v[i]);
	}
	printf("\n");

	for (i=1;i<n;i++) {
		elem = v[i];
		for (j=i;j>0 && elem<v[j-1];j--) {
			v[j] = v[j-1];
		}
		v[j] = elem;
		for (k=0;k<n;k++) printf("%d ", v[k]);
		printf(" %d primeros elementos ordenados.\n", i+1);
	}

	printf("Y por tanto todos ordenados:\n");
	for (k=0;k<n;k++) printf("%d ", v[k]); printf("\n");

	return 0;
}

/*
$ ./a.out 
Numero de elementos
8
Intro 8 enteros
6 5 3 1 8 7 2 4

5 6 3 1 8 7 2 4  2 primeros elementos ordenados.
3 5 6 1 8 7 2 4  3 primeros elementos ordenados.
1 3 5 6 8 7 2 4  4 primeros elementos ordenados.
1 3 5 6 8 7 2 4  5 primeros elementos ordenados.
1 3 5 6 7 8 2 4  6 primeros elementos ordenados.
1 2 3 5 6 7 8 4  7 primeros elementos ordenados.
1 2 3 4 5 6 7 8  8 primeros elementos ordenados.
Y por tanto todos ordenados:
1 2 3 4 5 6 7 8 
$
*/

