Straight Insertion Sort using C
Insertion sort is a simple sorting algorithm that builds the final sorted array (or list) one item at a time.
More details can be found here at https://en.wikipedia.org/wiki/Insertion_sortLet’s say we have an array a, so at each i-th pass, a[i] is successively compared with a[i-1], a[i-2], etc. until an element smaller than a[i] is found or the beginning of the array is reached. Elements that are found to be greater than a[i], are moved right by one position each to make room for a[i].
The time complexity of this algorithm is O(n^2).
The complete source code is given below
/*
* File: StraightInsertionSort.c
* Author: https://roytuts.com
*/
#include <stdio.h>
#include <stdlib.h>
void straightInsertionSort(int a[], int n) {
int i = 1, j, k = 0;
int temp;
while (i < n) {
j = i - 1;
temp = a[j + 1];
k = i;
while (j >= 0) {
if (temp < a[j]) {
k = j;
j--;
} else {
break;
}
}
j = i;
while (j > k) {
a[j] = a[j - 1];
j--;
}
a[j] = temp;
i++;
}
printf("\n");
printf("\nThe sorted array elements are given below\n");
for (i = 0; i < n; i++) {
printf("a[%d]=%d ", i, a[i]);
}
}
int main() {
int i, n = 6;
int a[] = {15, 8, 17, 12, 38, 19};
printf("\n:: Straight Insertion Sort ::\n");
printf("\nInput array elements\n");
for (i = 0; i < n; i++) {
printf("a[%d]=%d ", i, a[i]);
}
straightInsertionSort(a, n);
} Output
:: Straight Insertion Sort ::Input array elements a[0]=15 a[1]=8 a[2]=17 a[3]=12 a[4]=38 a[5]=19The sorted array elements are given below a[0]=8 a[1]=12 a[2]=15 a[3]=17 a[4]=19 a[5]=38
Thanks for reading.
No comments
Leave a comment