快速排序

希尔排序

  • 关键变量:增量gap
  • gap:初始值为len(alist) // 2
    • 1.表示分组的组数
      1. 每一组数据之间的间隔
  • 插入排序就是增量为1的希尔排序
1.将插入排序的代码写出
def sort(alist):
	for i in range(1,len(alist)):	
        while i>0:
            if alist[i-1] > alist[i]:
                alist[i-1],alist[i] = alist[i-1]+1,alist[i]
				i = i-1
			else:
				break
	return alist
#2.在插入排序代码中加入增量的概念
def sort(alist):
	agp = len(alist)//2   #初始增量
	while gap >=1:
		for i in range(1,len(alist)):	
        while i>0:
            if alist[i-gap] > alist[i]:
                alist[i-gap],alist[i] = alist[i-1]+1,alist[i]
				i = i-1
			else:
				break
	return alist
3.在步骤2中进行增量的缩减(增量缩减到1结束) 完整代码:
def sort(alist):
	gap = len(alist) // 2 #初始增量
	while gap >= 1:
		for i in range(gap,len(alist)):
			while i >0:
				if alist[i-gap] > alist[i]:
					alist[i-gap],alist[i] = alist[i],alist[i-gap]
					i -= gap
				else:
					break
		gap //= 2 #缩减增量
	return alist

alist = [3,8,5,7,6]
print(sort(alist))
[3, 5, 6, 7, 8]
posted @ 2020-04-12 19:33  zz洲神在此  阅读(66)  评论(0编辑  收藏  举报