韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > 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),在操作过程中是不稳定的,要注意哦~


关注

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

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

夜童| 儿媳妇长太漂亮免费观看电视剧| 美女被咬小头头视频大全| 《伦敦空姐美版2023》| 丈夫不在的日子中字头| 老公每天晚上吃奶对身体有伤害吗 | 五年级下册语文书电子版| 全糖可乐| 真人做爰高潮30分钟| 窝窝影院在线观看免费播放电视剧| 温柔女教师在线观看电视剧大全| 日韩妆和欧的一区二区区别在哪| 十八岁完整版高清免费观看| 我把刘姨俩腿扛在肩上是哪一集的| 外国大片又大又好看的PPT| .动漫《纯洁的修女》在线看 | 双乳被四个男人吃奶| 美女的胸怀| 欧美一区| 王叔 我老公还在客厅| 摧花狂魔全文阅读免费| 蜜桃成熟3D| 强伦轩特级A片免费播放女的老师| 丈夫不在的日子中字头| 免费观看已满十八岁电视剧在线播...| 欧美大片PPT免费PPT| BOBO浏览器(海外版)| 国产旗袍裙人妻人伦| 性上瘾| 王丽娟一夜被躁五次| 香港十大禁片| 少女与狗2在线观看免费版高清| 我把刘姨俩腿扛在肩上是哪一集的| 漫蛙漫画(网页入口)| 驻站多少集| 久久精品欧美-区二区三区| 蜜桃成时熟2| 女人被公猪钻入子宫有报应吗| 疯狂二人房间荷尔蒙爆发原声| 《玉蒲团2之艳乳欲仙欲》| 搜酷