Below is an example of the Shellsort algorithm in C++. See the Shellsort page for more information and implementations.
#include <iostream> #include <vector> void shellSort(std::vector<int> &arr) { /* * for-loop setup: * 1. set the gapSize to the size of the array / 2 * 2. run the loop as long as gapSize > 0 */ for (int gapSize = arr.size() / 2; gapSize > 0; gapSize /= 2) { for (int currentIndex = gapSize; currentIndex < arr.size(); currentIndex++) { // save the currentIndex int currentIndexCopy = currentIndex; // save the value of the currentIndex int item = arr[currentIndex]; while (currentIndexCopy >= gapSize && arr[currentIndexCopy - gapSize] > item) { arr[currentIndexCopy] = arr[currentIndexCopy - gapSize]; currentIndexCopy -= gapSize; } arr[currentIndexCopy] = item; } } } int main() { std::vector<int> arr = {12, 11, 15, 10, 9, 1, 2, 3, 13, 14, 4, 5, 6, 7, 8}; shellSort(arr); for (int i; i < arr.size(); i++) { std::cout << arr[i]; if (i < arr.size() - 1) std::cout << ", "; } }