Write a C program to perform insertion sort on an array of n elements.
Input Format:
Input consists of n+1 integers. The first integer corresponds to n, the number of elements in the array. The next n integers correspond to the elements in the array.
Output Format:
Refer sample output for formatting specs.
Sample Input and Output:
[All text in bold corresponds to input and the rest corresponds to output]
Enter the number of elements in the array
5
Enter element 1
4
Enter element 2
2
Enter element 3
7
Enter element 4
3
Enter element 5
1
Insertion sort.
array before sorting:
4 2 7 3 1
After Iteration 1
2 4 7 3 1
After Iteration 2
2 4 7 3 1
After Iteration 3
2 3 4 7 1
After Iteration 4
1 2 3 4 7
array after sorting: 1 2 3 4 7
Code:
#include<stdio.h> void insertionsort(int *, int); int main(void) { int n, a[20],i; printf("Enter the number of elements in the array\n"); scanf("%d",&n); for (i=0;i<n;++i) { printf("Enter element %d\n",i+1); scanf("%d",&a[i]); } printf("Insertion sort.\narray before sorting:\n"); for (i=0;i<n;i++) printf("%d ",a[i]); insertionsort(a,n); return 0; } void insertionsort(int *a, int size) { int value, hole,i,j; for(i=1;i<size;++i) { value=a[i]; hole=i-1; while(hole>=0 && a[hole]>value) { a[hole+1]=a[hole]; hole=hole-1; } a[hole+1]=value; printf("\nAfter Iteration %d\n",i); for(j=0;j<size;j++) printf("%d ",a[j]); } printf("\narray after sorting:\n"); for(j=0;j<size;j++) printf("%d ",a[j]); }
int must have the value of 'n' inside the function.
ReplyDeletei.e.all 'size' must be changed as 'n' for a successful execution!
Very informative article.Thank you author for posting this kind of article .
ReplyDeletehttp://www.wikitechy.com/view-article/insertion-sorting-
program-in-cpp-with-example-and-explanation
Both are really good,
Cheers,
Venkat
The Karnataka Examinations Authority has already announced to download the Admit Card KCET on the official site.
ReplyDelete