| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> python排序算法(六)、希尔排序 -> 正文阅读 |
|
[数据结构与算法]python排序算法(六)、希尔排序 |
插入排序: 假如有一个列表[5, 7, 4, 6, 3, 1, 2, 9, 8],将此列表当作桌子上的牌,最开始我们手里有一张牌5, 此时我们依次从剩余的牌[7, 4, 6, 3, 1, 2, 9, 8]中摸出牌来与手中的牌进行对比,手里的牌只要大于摸到的牌则往右走,最后将摸到的牌插入到合适的位置 插入排序代码:
而希尔排序(shell Sort)是一种分组插入排序算法。 希尔排序的具体思路步骤:(n等于列表的长度)
这里取列表 [5, 7, 4, 6, 3, 1, 2, 9, 8]? 第一次分组d1 = 9 // 2 = 4 ,分成4组,依次对[5, 3, 8],? [7, 1],? [4,2], [6,9] 进行插入排序? ? ? ? ?
这里我们可以将 5,7,4,6看成手里的牌, 即将摸到的牌为 3,1,2,9,8。5与3比较,7与1比较,4 与 2 比较, 6 与 9 比较。元素之间间隔4个下标。 依次下一列比较 第一次分组插入排序后:[3, 1, 2, 6, 5, 7, 4, 9, 8] 第二次分组 d2 = d1 // 2 =2, 依次对[3,2,5,4,8]、[1,6,7,9]进行插入排序
第二次分组插入排序后:[ 2,1,3,6,4,7,5,9,8 ] 第三次分组 d3 = d2 // 2 =1 则对?[ 2,1,3,6,4,7,5,9,8 ]进行插入排序,排序后[1, 2, 3, 4, 5, 6, 7, 8, 9] 代码?
插入排序和希尔排序对比
插入排序的时间复杂度为:O(n2) 希尔排序的时间复杂度为: ? ? ? ? 最坏:O(n2) ? ? ? ? 平均情况:O(n2) -- O(n) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:15:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |