diff --git a/sorting/insertion_sort.cpp b/sorting/insertion_sort.cpp index fe920ca59..180330a60 100644 --- a/sorting/insertion_sort.cpp +++ b/sorting/insertion_sort.cpp @@ -1,36 +1,93 @@ -// Insertion Sort +/** + * + * \file + * \brief [Insertion Sort Algorithm + * (Insertion Sort)](https://en.wikipedia.org/wiki/Insertion_sort) + * + * \author + * + * \details + * Insertion sort is a simple sorting algorithm that builds the final + * sorted array one at a time. It is much less efficient compared to + * other sorting algorithms like heap sort, merge sort or quick sort. + * However it has several advantages such as + *
+ * 1 - easy to implement + * 2 - For small set of data it is quite efficient + * 3 - More efficient that other Quadratic complexity algorithms like + * Selection sort or bubble sort. + * 4 - It's stable that is it does not change the relative order of + * elements with equal keys + * 5 - Works on hand means it can sort the array or list as it receives. + *+ * + * It is based on the same idea that people use to sort the playing cards in + * their hands. + * the algorithms goes in the manner that we start iterating over the array + * of elements as soon as we find a unsorted element that is a misplaced + * element we place it at a sorted position. + * + * Suppose initially we have + *
+ * 4 3 2 5 1 + * + * we start traversing from 4 till we reach 1 + * when we reach at 3 we find that it is misplaced so we take 3 and place + * it at a correct position thus the array will become + * + * 3 4 2 5 1 + * + * in the next iteration we are at 2 we find that this is also misplaced so + * we place it at the correct sorted position thus the array in this iteration + * becomes + * + * 2 3 4 5 1 + * + * we does not do anything with 5 and move on to the next iteration and select + * 1 which is misplaced and place it at correct position. Thus, we have + * + * 1 2 3 4 5 + *+ * + */ #include