希尔排序算法实例讲解
以下是一个希尔排序算法实例讲解: 假设我们有一个待排序的数组:[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 一人之下决战碧游村村长
- 23 校草请留步图片
- 24 机智宝宝
- 25 宝儿姐是那个电视剧
- 26 异人之下决战碧游村第七集
- 27 异人之下赵董宝儿姐身世
- 28 国民校草是女生完整版视频
- 29 碧游村战力排行
- 30 机智宝宝上线了