
Insertion Sort
This sorting algorithm works by repeatedly inserting elements into their correct position in an array.
Insertion sort is a simple sorting algorithm that works similarly to the way you sort playing cards in your hands. The array is virtually split into a sorted and an unsorted part. Values from the unsorted part are picked and placed in the correct position in the sorted part.
Question statement:
https://www.codingninjas.com/studio/problems/insertion-sort_3155179
Notes:
https://drive.google.com/file/d/10zLQIWEn55nwhFOrHybqnxexf96AX1LE/view
void InsertionSort(int n, vector<int> &arr){
for(int i = 1; i < n; i++){
// for rounds 1 to n-1
//Here we assume 0 index value as sorted
int temp = arr[i];
int j = i-1;
for(; j >= 0; j--){
if(arr[j] > temp) // {1, 4, 2, 3}
// Shifting j index value forward by 1
arr[j+1] = arr[j]; // now array becomes {1, 4, 4, 3} 2 is already stored in temp
else
break;
}
swap(arr[j+1], temp);
}
}

Space Complexity:
constant O(1)
Time complexity:
O(n^2)
// 1st round - 1 Comp
// 2nd round - 2 Comp...
// (nth - 1) Round - (n-1) comp
Best case:
Already Sorted = {1, 2, 3, 4,} T.C = O(n)
// total comparisons (n-1)
Worst Case:
Reversed Array = {4, 3, 2, 1} T.C = O(n^2)
Last updated
Was this helpful?