
桶排序
桶排序将数据按数值范围划分到若干个桶内,每个桶内部再使用其他排序算法排序,最后依次合并所有桶的元素得到有序序列;平均时间复杂度 O(n),适合数据分布均匀的场景,需要额外开辟桶空间,属于稳定排序。
基础算法, 排序
属于该分类的文章:
5篇文章

桶排序将数据按数值范围划分到若干个桶内,每个桶内部再使用其他排序算法排序,最后依次合并所有桶的元素得到有序序列;平均时间复杂度 O(n),适合数据分布均匀的场景,需要额外开辟桶空间,属于稳定排序。

堆排序利用大顶堆(或小顶堆)的堆性质,先将待排序数组构建成堆,反复取出堆顶最大元素放到末尾,再调整剩余元素维持堆结构,完成排序;时间复杂度稳定\(O(n\log n)\),原地排序,属于不稳定排序。

快速排序基于分治思想,选取一个基准元素,把数组划分成小于基准和大于基准的两部分,再递归对左右子区间继续划分排序;平均时间复杂度\(O(n\log n)\),最坏\(O(n^2)\),属于不稳定排序,不需要额外开辟大量辅助空间。

插入排序的核心思想是将数组分为已排序和未排序两部分,依次取出未排序部分的元素,向前遍历已排序部分找到合适位置插入,不断扩大有序区间直至整个数组有序,适合小规模数据,时间复杂度最坏为 O (n²)。

归并排序采用分治思想,先把数组不断对半拆分成子数组,对子数组排序后,再将两个有序子数组合并为一个有序数组;时间复杂度稳定为 O (nlogn),需要额外辅助空间,是稳定排序算法。