希尔排序(Shell Sort)是一种改进的插入排序算法,它通过将数组分成多个子数组,并对每个子数组进行插入排序,逐渐减小子数组的间隔,最终完成排序。希尔排序是一种高效的排序算法,特别适用于中等大小的数据集。本文将详细介绍希尔排序的工作原理和Python实现。
希尔排序的工作原理
希尔排序的基本思想是:
- 选择一个间隔序列(gap sequence),将数组分成多个子数组,每个子数组包含距离为间隔的元素。
- 对每个子数组进行插入排序,逐渐减小间隔。
重复步骤 1 和 2,直到间隔为 1,完成最后一次插入排序。 - 希尔排序的关键在于如何选择间隔序列,通常采用的是希尔建议的间隔序列(1, 4, 10, 23, 57…)或者使用其他自定义的序列。
下面是一个示例,演示希尔排序的过程:
原始数组:[12, 34, 54, 2, 3]
-
选择间隔序列,例如 [2, 1]。
-
第一轮排序,将间隔为 2 的元素分成两组,分别进行插入排序。
- 子数组 1&#