The shell sort improves on the insertion sort by breaking the original list into a number of smaller sub-lists, each of which is sorted using an insertion sort.
The unique way that these sub-lists are chosen is the key to the shell sort. Instead of breaking the list into sub-lists of contiguous items, the shell sort uses an increment i, sometimes called the gap, to create a sub-list by choosing all items that are i items apart.
Check out the resources below for a review of Shell sort:
def shell_sort(arr): sublistcount = len(arr)/2 # While we still have sub lists while sublistcount > 0: for start in range(sublistcount): # Use a gap insertion gap_insertion_sort(arr,start,sublistcount) sublistcount = sublistcount / 2 def gap_insertion_sort(arr,start,gap): for i in range(start+gap,len(arr),gap): currentvalue = arr[i] position = i # Using the Gap while position>=gap and arr[position-gap]>currentvalue: arr[position]=arr[position-gap] position = position-gap # Set current value arr[position]=currentvalue
arr = [45,67,23,45,21,24,7,2,6,4,90] shell_sort(arr) print(arr)
[2, 4, 6, 7, 21, 23, 24, 45, 45, 67, 90]
If you like my post please follow me to read my latest post on programming and technology.
Problem Statement: Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. Example…
Given an integer A. Compute and return the square root of A. If A is…
Given a zero-based permutation nums (0-indexed), build an array ans of the same length where…
A heap is a specialized tree-based data structure that satisfies the heap property. It is…
What is the Lowest Common Ancestor? In a tree, the lowest common ancestor (LCA) of…