Your sorting scheme is actually sorting sorting:
Sort 1. 12 89 18 4 6 Sort 2. 4 12 89 18 6 Sort 3. 4 6 12 89 18 Sort 4. 4 6 12 18 89
it finds the smallest number and puts it at the top of the list. Normal insertion sorting will do the following:
Sort 1. 12 89 18 4 6 Sort 2. 12 18 89 4 6 Sort 3. 4 12 18 89 6 Sort 4. 4 6 12 18 89
and he finds that 18 is less than 89 but greater than 12 and inserts 18 between 12 and 89 and the first iteration is performed. Then repeat the process.
Here is my code:
void insertion(int *x,int n){ // int *x - array, n- array length int i,j,k,temp,elem; // i,j,k - counters, elem - to store the element at pos x[i] for(i=0;i<n;i++){ elem=x[i]; // store the element j=i; while(j>0 && x[j-1]>elem){ // the magic(actual sorting) x[j]=x[j-1]; j--; } x[j]=elem; // swap the elements if(i>=1){ // here begins printing every sorting step, i>=1 because first time j is not greater than 0 so it just run through the loop first time printf("sort %d. ",i); // printing the step for(k=0;k<n;k++) // loop through array printf("%d ",x[k]); // display the elements already sorted printf("\n"); // when the array is displayed, insert a \n so that the next display will be on a new line } } }
source share