快速排序、归并排序、堆排序的理解及各自应用场景

编程入门 行业动态 更新时间:2024-10-23 19:21:30

快速排序、归并排序、堆排序的理解及各自应用<a href=https://www.elefans.com/category/jswz/34/1770727.html style=场景"/>

快速排序、归并排序、堆排序的理解及各自应用场景

一、问题背景

  我们常常在做各类算法题的时候,会遇到排序问题,这个时候就不得不提到快速排序、归并排序、堆排序几种稍微复杂一点的排序算法。那么我们理解各种算法的优势以及它们分别适用的业务场景则显得尤为重要。
  首先我们知道三者的性质如下:

排序算法时间复杂度额外空间复杂度稳定性
归并排序O(N*logN)O(N)有(相等时拷贝左组的即可)
快速排序O(N*logN)O(logN)无(小于区右扩,交换当前数和小于区最右侧的数时改变了相对顺序)
堆排序O(N*logN)O(1)无(调整为大根堆或小根堆时就改变了相对顺序)

二、个人理解

  • 当对于数据量大,数据分布高度随机的场景,快速排序的平均效率要高于 堆排序和 归并排序;
  • 对于Top- K问题,堆排序性能的下限(时间复杂度O(nlogn)要高于快排;
  • 归并排序适合链表排序但不适合数组排序;归并在外部排序,比如磁盘文件的情况下比快排好,因为快排很依赖数据的随机存取,而归并是顺序存取,对磁盘这种外存比较友好
  • 快排和堆排都是不稳定排序,归并排序是稳定排序。
  • 实际场合中,快排对于数据量大,数据分布随机的平均效率高于堆排序,但如果数据大部分有序发现快排明显退化的时候会切换到堆排,快排递归到比较小的数据量的时候为了节约递归产生的空间,也会切换成插入排序;

更多推荐

快速排序、归并排序、堆排序的理解及各自应用场景

本文发布于:2024-03-05 04:38:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711333.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:场景   快速

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!