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