Go语言排序算法(2) | 青训营笔记

81 阅读1分钟

希尔排序是一种基于插入排序的快速排序算法,对于大规模的数据,插入排序很慢,因为随着数据规模的增大,移动规模也可能随着增大,因为插入排序只会交换相邻的元素,元素只能一点点的从数组一端移动到指定位置,但是希尔排序是使用一种步长的思想,根据指定步长分为h个子数组,每个子数组进行插入排序,形成了h个有序子数组 不稳定排序

希尔排序的时间复杂度较直接插入排序低,它的时间是所取“增量”(步长gap)序列的函数。

最好时间复杂度: O(n) – 有序情况下

平均时间复杂度: O(1.2^n ~ 1.5^n) – Hibbard

最坏时间复杂度: O(n^2) — 希尔增量

空间复杂度:O(1)