news 2026/4/15 12:24:01

排序算法简介及分类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
排序算法简介及分类

一、排序算法分类

资料:https://pan.quark.cn/s/43d906ddfa1bhttps://pan.quark.cn/s/90ad8fba8347https://pan.quark.cn/s/d9d72152d3cf

按核心思路可分为几大类,以下是主流算法的简介:

1. 比较类排序(基于元素间比较)
(1)简单排序(入门级,时间复杂度 O(n²))
  • 冒泡排序

    • 思路:重复遍历数组,每次比较相邻元素,若顺序错误则交换,直到没有交换发生(像气泡上浮)。
    • 特点:稳定,空间复杂度 O(1)(原地排序),适合小规模数据或近乎有序的数据,最坏情况效率低。
  • 选择排序

    • 思路:每次从未排序部分找到最小/最大值,放到已排序部分的末尾。
    • 特点:不稳定(交换会打乱相等元素位置),空间复杂度 O(1),数据移动次数少,但无论数据是否有序,时间复杂度都是 O(n²)。
  • 插入排序

    • 思路:将数组分为已排序和未排序部分,逐个将未排序元素插入到已排序部分的正确位置。
    • 特点:稳定,空间复杂度 O(1),对近乎有序的小数据量(如 n<1000)效率极高,实际表现优于冒泡/选择排序。
(2)高级排序(时间复杂度 O(n log n))
  • 快速排序

    • 思路:分治思想,选一个“基准值”,将数组分为“小于基准”和“大于基准”两部分,递归排序子数组。
    • 特点:不稳定,空间复杂度 O(log n)(递归栈),实际应用中最快的排序算法(缓存友好),最坏情况(如已排序数据)退化为 O(n²)(可通过随机选基准优化),适合大规模无序数据。
  • 归并排序

    • 思路:分治思想,将数组拆分为子数组直到长度为1,再合并两个有序子数组为一个有序数组。
    • 特点:稳定,空间复杂度 O(n)(非原地),时间复杂度稳定 O(n log n),适合需要稳定性、数据量大且对内存要求不苛刻的场景(如外部排序)。
  • 堆排序

    • 思路:利用堆(完全二叉树)的特性,构建大顶堆/小顶堆,反复提取堆顶元素放到有序区。
    • 特点:不稳定,空间复杂度 O(1),时间复杂度稳定 O(n log n),但缓存不友好,实际效率略低于快速排序,适合内存受限的场景。
2. 非比较类排序(不依赖元素比较,时间复杂度 O(n))

这类算法利用数据的数值特征(如范围、位数),仅适用于特定场景:

  • 计数排序

    • 思路:统计每个数值出现的次数,再按数值顺序重构数组。
    • 特点:稳定,空间复杂度 O(n+k)(k 为数值范围),仅适用于数值范围较小的整数排序(如 0~100 的分数)。
  • 基数排序

    • 思路:按数字的每一位(个位、十位、百位)依次排序(借助计数/桶排序),从低位到高位完成整体有序。
    • 特点:稳定,空间复杂度 O(n+k)(k 为基数,如十进制 k=10),适合整数、字符串等按位排序的场景(如手机号、身份证号)。
  • 桶排序

    • 思路:将数据分配到多个“桶”中,对每个桶内数据单独排序,最后合并桶。
    • 特点:稳定(取决于桶内排序算法),空间复杂度 O(n+k)(k 为桶数),适合数据均匀分布的场景(如 0~1 之间的浮点数)。

二、核心特性对比(简版)

算法时间复杂度(平均)稳定性空间复杂度适用场景
冒泡排序O(n²)稳定O(1)小数据、近乎有序
插入排序O(n²)稳定O(1)小数据、近乎有序
快速排序O(n log n)不稳定O(log n)大规模无序数据(主流)
归并排序O(n log n)稳定O(n)需稳定、大规模数据
计数排序O(n+k)稳定O(n+k)数值范围小的整数
基数排序O(d(n+k))稳定O(n+k)多位数、字符串排序

三、总结

  • 小规模数据:优先选插入排序(实际效率最优);
  • 大规模无序数据:优先选快速排序(综合性能最好);
  • 需稳定性+大规模数据:选归并排序;
  • 数值特征明确(如范围小、位数固定):选非比较类排序(计数/基数/桶排序)。

排序算法是算法入门的核心,理解其思路、复杂度和适用场景,是解决实际开发中数据排序问题的基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 10:07:06

Samba as Wins Server

自己做的小小實驗 希望能跨網段透過netbios存取同一工作群組下的電腦 Q1 : 同一工作群組在網路芳鄰重新整理會直接出現 還是要連線後才會出現? 用Samba 當作wins server Alpine Linux 安裝samba apk add samba編輯 /etc/samba/smb.conf vi /etc/samba/smb.conf將 wins supp…

作者头像 李华
网站建设 2026/4/10 11:46:31

电子会计档案管理系统:档案宝如何发挥会计档案的价值?

一、引言&#xff1a;电子会计档案时代&#xff0c;档案宝的价值定位在数字化转型浪潮下&#xff0c;会计档案已从传统纸质存储的 “历史凭证”&#xff0c;转变为企业决策的 “数据资产”。电子会计档案管理系统 “档案宝”&#xff0c;打破了传统档案管理的时空限制与效率瓶颈…

作者头像 李华
网站建设 2026/4/13 20:47:13

计算广告:智能时代的营销科学与实践(二十一)

目录 11.2 担保式投送系统 11.2.1 流量预测 11.2.2 频次控制 11.3 在线分配 11.3.1 在线分配问题 11.3.2 在线分配问题举例 11.3.3 极限性能研究 11.3.4 实用优化算法 总结 11.2 担保式投送系统 担保式投送&#xff08;Guaranteed Delivery&#xff0c; GD&#xff09…

作者头像 李华
网站建设 2026/4/15 8:57:00

计算广告:智能时代的营销科学与实践(二十三)

目录 第13章 竞价广告核心技术 13.1 竞价广告计价算法 1. 从密封竞价到广义第二价格&#xff1a;市场的进化 2. VCG拍卖&#xff1a;理论上的完美与现实的差距 3. 计价算法的工程实现与考量 4. 计价的演进&#xff1a;从CPC到oCPX 13.2 搜索广告系统 13.2.1 查询扩展 1…

作者头像 李华
网站建设 2026/4/15 8:54:09

【完整源码+数据集+部署教程】食品物品检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

一、背景意义 随着全球经济的快速发展和生活水平的不断提高&#xff0c;食品消费市场日益繁荣&#xff0c;食品安全问题也随之凸显。食品物品的检测与识别不仅是保障消费者权益的重要环节&#xff0c;也是提升食品产业链效率的关键因素。传统的食品检测方法多依赖人工检查&…

作者头像 李华
网站建设 2026/4/15 8:53:35

Java小白求职互联网大厂:面试官的技术挑战与业务思考

文章简述 在这篇文章中&#xff0c;我们将模拟一个互联网大厂Java小白求职者的面试场景。面试官通过一系列技术问题&#xff0c;考察求职者的Java核心技术、微服务架构、缓存技术、日志处理等能力&#xff0c;并引导其思考实际业务场景中的应用。本文将详细解析每个问题的答案&…

作者头像 李华