diff --git a/sorting/shellSort.py b/sorting/shellSort.py new file mode 100644 index 0000000..f0d38e5 --- /dev/null +++ b/sorting/shellSort.py @@ -0,0 +1,28 @@ + +# coding: utf-8 + +# In[2]: + + +alist = [54,26,93,17,77,31,44,55,20] +def shellSort(alist): + sublistcount = len(alist)//2 + while sublistcount > 0: + for startposition in range(sublistcount): + gapInsertionSort(alist,startposition,sublistcount) + sublistcount = sublistcount // 2 + return alist + +def gapInsertionSort(alist,start,gap): + for i in range(start+gap,len(alist),gap): + + currentvalue = alist[i] + position = i + + while position>=gap and alist[position-gap]>currentvalue: + alist[position]=alist[position-gap] + position = position-gap + + alist[position]=currentvalue +print(shellSort(alist)) +