Insertion_sort(k,N): Vector K with N elements
Brief Explanation :
Brief Explanation :
Initially , first element is the only member of sorted array.
Then we move further , pick next element i.e. first element of the unsorted array and insert it to appropriate position .
This is how , the sorted array is growing and unsorted is shrinking with every pass and hence at last the whole array is sorted .
ALGO :-
o) PASS - pass number and index of first unsorted data
o) HOLE - Index of element to be pick up for insertion
o) VALUE - The element to picked up for insertion
step 1 : [loop on PASS index]
Repeat thru step 4 for PASS = 1,2,...,N
step 2 : [Initialize VALUE and HOLE]
VALUE <- K[PASS]
HOLE <- PASS
step 3 : [Inserting the current value in sorted sub-array at appropriate index]
Repeat steps 3.1 and 3.2 while HOLE>0 and K[HOLE-1]>VALUE
3.1 : [Shifting the greater element to right side]
K[HOLE] <- K[HOLE-1]
3.2 : [Shifting the index HOLE to left ]
HOLE <- HOLE-1
step 4 : [Inserting value after necessary shifts made]
K[HOLE] <- VALUE
step 4 : [Finished]
By following algorithm you can easily implement a program for it . Else , You can refer the following code and check the implementation !
Implementation of Insertion sort in C :
#include<stdio.h>
#define max 200
int main()
{
int a[max],n,i;
printf("Enter the number of elements : ");
scanf("%d",&n);
printf("Enter array elements :\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//insertion sort
int value,hole,k;
for(k=1;k<n;k++)
{
value = a[k];/*Here a[k] is the element which is to be inserted into sorted part*/
hole = k;
while(hole>0 && a[hole-1]>value)//shifting all greater elements
{
a[hole] = a[hole-1];
hole--;
}
a[hole] = value;/*now, hole is the perfect index where we can insert the value.*/
}
printf("Array : ");
for(i=0;i<n;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
}
Thanking you !
#define max 200
int main()
{
int a[max],n,i;
printf("Enter the number of elements : ");
scanf("%d",&n);
printf("Enter array elements :\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
//insertion sort
int value,hole,k;
for(k=1;k<n;k++)
{
value = a[k];/*Here a[k] is the element which is to be inserted into sorted part*/
hole = k;
while(hole>0 && a[hole-1]>value)//shifting all greater elements
{
a[hole] = a[hole-1];
hole--;
}
a[hole] = value;/*now, hole is the perfect index where we can insert the value.*/
}
printf("Array : ");
for(i=0;i<n;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
}
Thanking you !
No comments :
Post a Comment