C++ Program for ShellSort

In shellSort, we make the array h-sorted for a large value of h. We keep reducing the value of h until it becomes 1. An array is said to be h-sorted if all sublists of every h’th element is sorted.

`// C++ implementation of Shell Sort` `#include <iostream>` ` ` `/* function to sort arr using shellSort */` `void` `shellSort(` `int` `arr[], ` `int` `n)` `{` ` ` `// Start with a big gap, then reduce the gap` ` ` `for` `(` `int` `gap = n / 2; gap > 0; gap /= 2) {` ` ` `// Do a gapped insertion sort for this gap size.` ` ` `// The first gap elements arr[0..gap-1] are already in gapped order` ` ` `// keep adding one more element until the entire array is` ` ` `// gap sorted` ` ` `for` `(` `int` `i = gap; i < n; i += 1) {` ` ` `// add arr[i] to the elements that have been gap sorted` ` ` `// save arr[i] in temp and make a hole at position i` ` ` `int` `temp = arr[i];` ` ` ` ` `// shift earlier gap-sorted elements up until the correct` ` ` `// location for arr[i] is found` ` ` `int` `j;` ` ` `for` `(j = i; j >= gap && arr[j - gap] > temp; j -= gap)` ` ` `arr[j] = arr[j - gap];` ` ` ` ` `// put temp (the original arr[i]) in its correct location` ` ` `arr[j] = temp;` ` ` `}` ` ` `}` `}` ` ` `void` `printArray(` `int` `arr[], ` `int` `n)` `{` ` ` `for` `(` `int` `i = 0; i < n; i++)` ` ` `std::cout << arr[i] << ` `" "` `;` ` ` `std::cout << ` `"\n"` `;` `}` ` ` `int` `main()` `{` ` ` `int` `arr[] = { 12, 34, 54, 2, 3 };` ` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]);` ` ` ` ` `std::cout << ` `"Array before sorting: \n"` `;` ` ` `printArray(arr, n);` ` ` ` ` `shellSort(arr, n);` ` ` ` ` `std::cout << ` `"Array after sorting: \n"` `;` ` ` `printArray(arr, n);` `}` |

**Output:**

Array before sorting: 12 34 54 2 3 Array after sorting: 2 3 12 34 54

Please refer complete article on ShellSort for more details!

Want to learn from the best curated videos and practice problems, check out the

**C++ Foundation Course**for Basic to Advanced C++ and**C++ STL Course**for the language and STL. To complete your preparation from learning a language to DS Algo and many more, please refer**Complete Interview Preparation Course****.**