希尔排序算法实例讲解
以下是一个希尔排序算法实例讲解: 假设我们有一个待排序的数组:[49, 38, 65, 97, 76, 13, 27, 49*]。 1. 首先选择一个初始增量,比如取初始增量d1 = 5。 - 根据这个增量,将数组分为若干个子序列。 - 子序列1:49,04(这里假设原数组中有个04元素用于演示完整过程)。 - 子序列2:38,49。 - 子序列3:65,13。 - 子序列4:97,27。 - 子序列5:76,49*。 - 然后对每个子序列进行直接插入排序。例如在子序列1中,49和04比较,因为49 > 04,所以交换它们的位置,得到04,49。对其他子序列也进行类似操作。经过这一趟排序后,数组变为:13, 27, 49*,55, 04, 49, 38, 65, 97, 76(这里假设原数组中有个55元素用于演示完整过程)。 2. 接着减小增量,比如取d = 3。 - 重新分组子序列: - 子序列1:13,55,49。 - 子序列2:27,04,38。 - 子序列3:49*,65,76。 - 子序列4:55,97。 - 对这些子序列进行直接插入排序。以子序列1为例,13与55比较,13<55,不交换;55与49比较,55 > 49,交换它们的位置,得到13,49,55。对其他子序列进行类似操作后,数组变为:13, 04, 49*,38, 27, 49, 55, 65, 97, 76。 3. 最后,当增量d = 1时。 - 此时整个数组就是一个子序列,再进行一次直接插入排序。从第二个元素开始,04与13比较,04<13,交换它们的位置,然后依次比较和交换,直到整个数组有序,最终得到:04, 13, 27, 38, 49*,49, 55, 65, 76, 97。 希尔排序的基本思想就是先将整个待排元素序列切割成若干个子序列分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。由于直接插入排序在元素基本有序的情况下(接近最好情况),排序效率是非常高的,因此希尔排序在时间效率上有较大的优势。
答案问题点击 举报反馈
提到的作品
热门问答
- 1 龙珠超第二季中文版
- 2 范卿平老师厉害吗
- 3 痔疮最怕的马齿苋
- 4 痔疮有效的民间土方法
- 5 男主许七安短剧免费观看
- 6 龙珠超第二季魔罗篇分集剧情评价
- 7 消灾解厄疏文怎么填写
- 8 刘奕君家世
- 9 海女斗罗
- 10 第五人格漫画网站
- 11 异人之下电视剧免费观看全集完整
- 12 痔疮的最佳治疗方法特别简单
- 13 主角是海帕杰顿
- 14 海女斗罗九大魂技和魂骨技能
- 15 大奉打更人杨千幻搞笑瞬间
- 16 一夫百应乳膏功效
- 17 程昱为什么叫食人魔
- 18 我成了剑斗罗的孙子尘川
- 19 歌星穿越斗罗
- 20 我的女性之路 变装小说
- 21 穿越斗罗变成一只狐狸的小说
- 22 异人之下6季全集免费
- 23 朱竹清服用了什么灵药
- 24 痔疮膏千万要慎用
- 25 变装女警 cd 小说
- 26 许文强活了多少岁
- 27 斗罗大陆美人鱼丽雅
- 28 嗣承词者能随便对人说吗
- 29 毒士贾诩一计害三贤
- 30 穿越斗罗大陆成为海魂兽