| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 七大排序之——希尔排序 -> 正文阅读 |
|
[数据结构与算法]七大排序之——希尔排序 |
希尔排序1.算法思想及过程分解? 希尔排序是在直接插入排序的基础上产生的,区别是在进行直接插入排序之前,会进行一次分组。 例如:有数组int[] arr = { 4 , 22 , 45 , 13 , 51 , 2 , 11 , 69 , 26 , 0 },数组长度为10,下标为0~9。 ①第一次分组对下标进行( 数组长度/2 )的模运算(做除法取余数)结果相同的为一组,即 ? 0 mod 5 = 0 , 1 mod 5 = 1 , 2 mod 5 = 2 , 3 mod 5 = 3 , 4 mod 5 = 4 , 5 mod 5 = 0 , 6 mod 5 = 1 , 7 mod 5 = 2 , 8 mod 5 = 3 , 9 mod 5 = 4 这样下标0、5的数就被分为了一组,下标1、6的数为一组…… ②将arr[0]、arr[5]构成的数组{ 4 ,2 }进行直接插入排序(将2插入数组{4}中), 结果为:{2,4} 在整个数组中的行为是:{ 4 , 22 , 45 , 13 , 51 , 2 , 11 , 69 , 26 , 0 } 变为{ 2 , 22 , 45 , 13 , 51 , 4 , 11 , 69 , 26 , 0 } 同理可得: ? { 2 , 22 , 45 , 13 , 51 , 4 , 11 , 69 , 26 , 0 }----插入(交换)------>{ 2 , 11 , 45 , 13 , 51 , 4 , 22 , 69 , 26 , 0 } ----------> ------->{ 2 , 11 , 45 , 13 , 51 , 4 , 22 , 69 , 26 , 0 }—未插入----> ------->{ 2 , 11 , 45 , 13 , 51 , 4 , 22 , 69 , 26 , 0 }—未插入----> ------->{ 2 , 11 , 45 , 13 , 51 , 4 , 22 , 69 , 26 , 0 }----插入------>{ 2 , 11 , 45 , 13 , 0 , 4 , 22 , 69 , 26 , 51 } ③第二次分组取(数组长度/2/2)也就是2, 分组结果为{ 2 , 11 , 45 , 13 , 0 , 4 , 22 , 69 , 26 , 51 } 直接插入过程为: 第一组:{ 2 , 11 , 45 , 13 , 0 , 4 , 22 , 69 , 26 , 51 }---------->{ 2 , 11 , 45 , 13 , 0 , 4 , 22 , 69 , 26 , 51 }------------> --------->{ 0 , 11 , 2 , 13 , 45 , 4 , 22 , 69 , 26 , 51 }------------>{ 0 , 11 , 2 , 13 , 22 , 4 , 45 , 69 , 26 , 51 }------------> --------->{ 0 , 11 , 2 , 13 , 22 , 4 , 26 , 69 , 45 , 51 } 第二组:{ 0 , 11 , 2 , 13 , 22 , 4 , 26 , 69 , 45 , 51 }---------->{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 69 , 45 , 51 }---------> ---------->{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 69 , 45 , 51 }----------->{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 51 , 45 , 69 } ④第三次分组(数组长度/2/2/2)也就是1,这将是最后一次分组,数组将会在本次简单选择排序后完成排序。 分组结果为{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 51 , 45 , 69 } 直接插入过程为:{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }---------->{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }-------> --------->{ 0 , 4 , 2 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }------------> --------->{ 0 , 2 , 4 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }-----------> --------->{ 0 , 2 , 4 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }-----------> --------->{ 0 , 2 , 4 , 11 , 22 , 13 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }------------> --------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }------------> --------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }------------> --------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 45 , 51, 69 }------------> --------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 51 , 45 , 69 }---------->{ 0 , 2 , 4 , 11 , 13, 22 , 26 , 45 , 51, 69 }------------> 至此,希尔排序完成。 2. 代码实现
3.运行结果 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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:37:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |