希尔排序 | 通俗易懂的理解排序过程
响应群众需求,今天安排上「希尔排序」。 阅读本文前,请先服用「 插入排序 」,效果更加。 Content 实现过程 关键思路 代码实现 结合代码和中间过程,再体会 算法评价 「希尔排序」🆚 「插入排序」 听说有彩蛋❓ 👀「 更多排序 」 《 冒泡排序 | 通俗易懂的理解排序过程 》 《 选择排序 | 通俗易懂的理解排序过程 》 《 快速排序 | 通俗易懂的理解排序过程 》 《 插入排序 | 通俗易懂的理解排序过程 》 1. 实现过程 对 [5,4,1,3,2] 升序排列,中间步骤 ⬇️ 2. 关键思路 「希尔排序」—— 按固定间隔划分子序列,对每个子序列实现简单插入排序。 这么来看, 「希尔排序」可以拆解成两大步骤 : 划分子序列; 在子序列中简单插入排序。 Q:怎么划分子序列? 等间隔划分 。本例中,初始下标之差按照 d= n//2 计算,之后 d = d//2 循环更新。 先做远距离的移动,再逐渐缩小间隔 。这样,可以减少移动的次数,因为 极端情况,间隔为1时即退化为简单插入排序。 Q:简单插入排序怎么操作? 简单概括 —— 比较、后移、腾位置、插入target 。没看过简单插入排序的,点这里。 3. 代码实现 def ShellSort(arr): def ssort(arr, d): n = len(arr) for i in range(d, n): j = i-d #