时间复杂度为O(nlogn)的排序算法

四种复杂度满足该值的算法

  • 1. 希尔排序
    • 1.1 分组
    • 1.2 组内排序
    • 1.3 总结
  • 2. 堆排序
    • 2.1 建堆
    • 2.2 把堆首(最大值)和堆尾互换
    • 2.3 重新构建堆
    • 2.4 重复步骤
    • 2.5 动画演示
  • 3. 快速排序
    • 动画演示
  • 4. 归并排序
    • 博客链接
  • 5. 稳定性
    • 5.1 稳定性的定义
    • 5.2 四种算法的稳定性

1. 希尔排序

1.1 分组

分组前:
时间复杂度为O(nlogn)的排序算法_第1张图片
分组后:
时间复杂度为O(nlogn)的排序算法_第2张图片
分组结果:
时间复杂度为O(nlogn)的排序算法_第3张图片

1.2 组内排序

时间复杂度为O(nlogn)的排序算法_第4张图片
时间复杂度为O(nlogn)的排序算法_第5张图片
时间复杂度为O(nlogn)的排序算法_第6张图片
时间复杂度为O(nlogn)的排序算法_第7张图片
时间复杂度为O(nlogn)的排序算法_第8张图片

1.3 总结

时间复杂度为O(nlogn)的排序算法_第9张图片
希尔排序本质上是插入排序的优化,先对间隔较大的元素进行插入排序,完成宏观调控,然后逐步缩小间隔,最后一轮一定是间隔为 1 的排序,也就是插入排序。

2. 堆排序

2.1 建堆

堆分为大顶堆和小顶堆,大顶堆中最大的元素在堆顶,小顶堆中最小的元素在堆顶。

2.2 把堆首(最大值)和堆尾互换

2.3 重新构建堆

把堆的尺寸缩小1,并重新构建堆,目的是把新的数组顶端数据调整到相应的位置。

2.4 重复步骤

重复步骤2、3直到堆的尺寸为1。

2.5 动画演示

讲解视频:堆排序动画演示

3. 快速排序

动画演示

讲解视频:快速排序(双指针法)动画演示

4. 归并排序

博客链接

讲解博客:归并排序算法

5. 稳定性

5.1 稳定性的定义

待排序的序列中有两元素相等,排序之后它们的先后顺序不变。

5.2 四种算法的稳定性

稳定:归并排序
不稳定:希尔排序、堆排序、快速排序

参考资料:时间复杂度O(nlogn)的排序算法

你可能感兴趣的:(数据结构,排序算法,算法,数据结构)