Code For Alls..!

get the code!!

Wednesday, 19 July 2017

Insertion Sort

The array is searched sequentially and unsorted items are moved and inserted into the sorted sub-list (in the same array). This algorithm is not suitable for large data sets as its average and worst case complexity are of Ο(n2), where is the number of items.


We take an unsorted array for our example.
Unsorted Array
Insertion sort compares the first two elements.
Insertion Sort
It finds that both 14 and 33 are already in ascending order. For now, 14 is in sorted sub-list.
Insertion Sort
Insertion sort moves ahead and compares 33 with 27.
Insertion Sort
And finds that 33 is not in the correct position.
Insertion Sort
It swaps 33 with 27. It also checks with all the elements of sorted sub-list. Here we see that the sorted sub-list has only one element 14, and 27 is greater than 14. Hence, the sorted sub-list remains sorted after swapping.
Insertion Sort
By now we have 14 and 27 in the sorted sub-list. Next, it compares 33 with 10.
Insertion Sort
These values are not in a sorted order.
Insertion Sort
So we swap them.
Insertion Sort
However, swapping makes 27 and 10 unsorted.
Insertion Sort
Hence, we swap them too.
Insertion Sort
Again we find 14 and 10 in an unsorted order.
Insertion Sort
We swap them again. By the end of third iteration, we have a sorted sub-list of 4 items.
Insertion Sort
This process goes on until all the unsorted values are covered in a sorted sub-list.

C Code:
#include <stdio.h>
#include <stdlib.h>
void ins(int *a,int n)
{
int i,j,val,t;
for(i=1;i<n;i++)
{val=a[i];
t=i;
while(t>0&&a[t-1]>val)
{
a[t]=a[t-1];
t--;
}
a[t]=val;
}
}
int bmain(int argc, char *argv[]) {
int *p,i,n;
scanf("%d",&n);
p=malloc(sizeof(int)*n);
for(i=0;i<n;i++)
scanf("%d",p+i);
ins(p,n);
for(i=0;i<n;i++)
printf("%d",*(p+i));
return 0;
}