From 46564e2b4ac5e53d026650a5b6a6bc7a334ab5f7 Mon Sep 17 00:00:00 2001 From: HetalSharma <75665601+HetalSharma@users.noreply.github.com> Date: Sun, 10 Oct 2021 12:41:03 +0530 Subject: [PATCH] Create shell sort.cpp --- .../Searching and Sorting/shell sort.cpp | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Data Structures/Searching and Sorting/shell sort.cpp diff --git a/Data Structures/Searching and Sorting/shell sort.cpp b/Data Structures/Searching and Sorting/shell sort.cpp new file mode 100644 index 00000000..15913d14 --- /dev/null +++ b/Data Structures/Searching and Sorting/shell sort.cpp @@ -0,0 +1,54 @@ +// C++ implementation of Shell Sort +#include +using namespace std; + +/* function to sort arr using shellSort */ +int 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 a[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 a[i] to the elements that have been gap sorted + // save a[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 a[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 a[i]) in its correct location + arr[j] = temp; + } + } + return 0; +} + +void printArray(int arr[], int n) +{ + for (int i=0; i