|
|
# 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))
|
|
|