欢迎光临散文网 会员登陆 & 注册

左神算法数据结构体系学习班

2022-09-09 22:21 作者:rei源义经  | 我要投稿

希尔排序

  • 算法思想:

希尔排序的算法思想:将待排序数组按照步长gap进行分组(已报名左程云算法 底部评),然后将每组的元素利用直接插入排序的方法进行排序;每次将gap折半减小,循环上述操作;当gap=1时,利用直接插入,完成排序。
同样的:从上面的描述中我们可以发现:希尔排序的总体实现应该由三个循环完成:

  1. 第一层循环:将gap依次折半,对序列进行分组,直到gap=1

  2. 第二、三层循环:也即直接插入排序所需要的两次循环。具体描述见上。

  • 代码实现:

#希尔排序def insert_shell(L):    #初始化gap值,此处利用序列长度的一般为其赋值    gap = (int)(len(L)/2)    #第一层循环:依次改变gap值对列表进行分组    while (gap >= 1):    #下面:利用直接插入排序的思想对分组数据进行排序    #range(gap,len(L)):从gap开始        for x in range(gap,len(L)):    #range(x-gap,-1,-gap):从x-gap开始与选定元素开始倒序比较,每个比较元素之间间隔gap            for i in range(x-gap,-1,-gap):    #如果该组当中两个元素满足交换条件,则进行交换                if L[i] > L[i+gap]:                    temp = L[i+gap]                    L[i+gap] = L[i]                    L[i] =temp    #while循环条件折半        gap = (int)(gap/2)


左神算法数据结构体系学习班的评论 (共 条)

分享到微博请遵守国家法律