国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python中如何进行希尔排序?

python中如何进行希尔排序?

Python 希尔排序 编程

头像

宋雪维

2020-12-06 14:35:362892浏览 · 0收藏 · 0评论

如果问大家用于科学计算,属于插入类排序的缩小增量法是什么?你知道吗?其实是希尔排序法。 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会向大家向大家介绍python中的希尔排序及其使用代码。

希尔排序

背景:插入排序在小规模数据、数据基本有序时效率较高

思想:将序列分为若干子序列进行插入排序,待序列基本有序时,对整体进行插入排序

代码:

# python实现希尔排序(插入排序的一种)
# 先宏观进行调整,在进行微观调整
 
def shellSort(lst, k, reverse=False):
    length = len(lst)
    dk = k # 设置一个增量dk
    while dk > 0:
        for i in range(dk, length):
            temp = lst[i]
            j = i
            while j >= dk and lst[j - dk] > temp:
                lst[j] = lst[j - dk]
                j -= dk
            lst[j] = temp
        dk = int(dk / 2)
    if reverse == False:
        return lst
    else:
        lst.reverse()
        return lst

输出:

test1 = [19, 21, 4, 6, 25, 3, 99, 67, 12]
test2 = [19, 21, 4, 6, 25, 3, 99, 67, 12]
data1 = shellSort(test1, 7)
data2 = shellSort(test2, 2, True)
print("从小到大:", data1)
print("从大到小:", data2)

希尔排序在最优时间复杂会根据步长序列的不同而不同,最坏时间复杂度是O(n^2),在操作过程中是不稳定的,要注意哦~


关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《温柔的大姐姐》动漫免费观看| 少女韩国免费观看高清电视剧八戒| 兄弟换麦子4国语中字| 无风险9.1免费版观看| 一线产区和二线产区的标准图| 韩国电影火热的邻居高清完整版免.| 《老板娘2》完整版| 狼人加鲁鲁兽天赋澳彩心水| 免费的行情网站WWW下载大全| 韩国咬住奶头的乳三级| 成全在线观看免费完整的| 在床上的72种扦插方法| 医院玩弄人妻1~12章| 三人成虎| 苍老师在线观看免费播放电视剧| 朋友的母亲中字ID| 3DMAX9喷射2D3D区别漫.| C2000论坛| 我的邻居的老婆2完整版电视剧| 保姆的特殊待遇5| 《甜蜜惩罚2》第二季的剧情| 当着老公的面被维修工欺负| 射手中文网| 巜禁忌7》A片| 《性呻吟》伦理| 中字《喝醉的丈夫被结城送回家》| 日本大片又大又好看的PPT | 荒野激战2欧美版10大明星| 女子蹲下尿裤子的视频 | 少妇高潮喷水久久久久久久久| 边添小流边狠狠躁69集| 法国空姐1-4| 双人床上做运动后排有伤害吗| 《漂亮的秘书HD》在线观看| 坤坤寒入桃子里电视剧免费看 | 老师穿白色双开真丝旗袍怎么穿| 姑妄言| 韩剧在办公室做饭的电影| 初中生兄弟互相导管立的经历| 娇瘾缠欢TXT小说| 《妈妈让我戴上避孕套》歌词