From 71c4fcbab959abaa6f53b2083a20fadd2f699da4 Mon Sep 17 00:00:00 2001 From: Chirag Verma Date: Sun, 15 Oct 2023 22:15:47 +0530 Subject: [PATCH] Create shellsort.py --- Python/shellsort.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Python/shellsort.py diff --git a/Python/shellsort.py b/Python/shellsort.py new file mode 100644 index 00000000..44ba6b2e --- /dev/null +++ b/Python/shellsort.py @@ -0,0 +1,45 @@ +# Python program for implementation of Shell Sort + +def shellSort(arr): + + # Start with a big gap, then reduce the gap + n = len(arr) + gap = n/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 + while gap > 0: + + for i in range(gap,n): + + # add a[i] to the elements that have been gap sorted + # save a[i] in temp and make a hole at position i + temp = arr[i] + + # shift earlier gap-sorted elements up until the correct + # location for a[i] is found + j = i + while j >= gap and arr[j-gap] >temp: + arr[j] = arr[j-gap] + j -= gap + + # put temp (the original a[i]) in its correct location + arr[j] = temp + gap /= 2 + + +# Driver code to test above +arr = [ 12, 34, 54, 2, 3] + +n = len(arr) +print ("Array before sorting:") +for i in range(n): + print(arr[i]), + +shellSort(arr) + +print ("\nArray after sorting:") +for i in range(n): + print(arr[i]),