码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2020-04-12 20:22:42      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:步骤   sort   def   lis   ret   turn   else   就是   概念   

希尔排序

  • 关键变量:增量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]

快速排序

标签:步骤   sort   def   lis   ret   turn   else   就是   概念   

原文地址:https://www.cnblogs.com/zzsy/p/12687103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!