希尔排序
希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。
希尔排序,也称递减增量排序算法,以其设计者希尔(Donald Shell)的名字命名,该算法由 1959 年公布。
def shellSort(input_list):
length=len(input_list)
if length<=1:
return input_list
sorted_list=input_list
gap=length//2
while gap>0:
for i in range(gap,length):
j=i-gap
temp=sorted_list[i]
while j>=0 and temp<sorted_list[j]:
sorted_list[j+gap]=sorted_list[j]
j-=gap
sorted_list[j+gap]=temp
gap//=2
return sorted_list
if __name__=='__main__':
input_list=[6,4,8,9,2,3,1]
print('排序前',input_list)
sorted_list=shellSort(input_list)
print('排序后',sorted_list)
希尔排序,他的主要思想是先把比较大放到后面,然后把比较小的移到前面去。你想他开始以gap这个步长。然后集体就可以并行的集体的去往后移这个操作。这样的话,它就是可以用多处理器来进行处理,而不是用单个处理器一个一个的来进行处理。
当他步长不为一的时候,他内个步长里面的每一个数开一个线程,就是步长是多少就开几个线程
然后他最后想要确定他排序完成了,还是要进行一次直接插入排序即步长为一的排序,那个时候因为他已经排的差不多了所以时间复杂度用不了N^2.