From 3415739a73c13f02e3f38b10eed533c4f7e383b8 Mon Sep 17 00:00:00 2001 From: Abhishek Anand Date: Tue, 15 Oct 2019 23:57:47 +0530 Subject: [PATCH] Create shellsort.cpp --- shellsort.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 shellsort.cpp diff --git a/shellsort.cpp b/shellsort.cpp new file mode 100644 index 0000000..d1e6939 --- /dev/null +++ b/shellsort.cpp @@ -0,0 +1,53 @@ +#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