当前位置: 首页 > news >正文

【算法】十大排序算法(含时间复杂度、核心思想)

         以下是 **十大经典排序算法** 的时间复杂度、空间复杂度及稳定性总结,适用于面试快速回顾:

排序算法对比表

排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想
冒泡排序O(n)O(n²)O(n²)O(1)稳定相邻元素交换,大数沉底。
选择排序O(n²)O(n²)O(n²)O(1)不稳定每次选最小元素放到已排序末尾。
插入排序O(n)O(n²)O(n²)O(1)稳定将未排序元素插入已排序序列。
希尔排序O(n log n)O(n log² n)O(n log² n)O(1)不稳定分组(增量)插入排序,逐步缩小间隔。
归并排序O(n log n)O(n log n)O(n log n)O(n)稳定分治法,合并有序子序列。
快速排序O(n log n)O(n log n)O(n²)O(log n)不稳定分治法,基准值分区递归排序。
堆排序O(n log n)O(n log n)O(n log n)O(1)不稳定构建堆结构,交换堆顶与末尾。
计数排序O(n + k)O(n + k)O(n + k)O(n + k)稳定统计元素出现次数,累加输出。
桶排序O(n + k)O(n + k)O(n²)O(n + k)稳定分桶后对每个桶单独排序。
基数排序O(nk)O(nk)O(nk)O(n + k)稳定按位分配收集,从低位到高位。

关键说明

  1. 稳定性:稳定排序算法保证相等元素的相对顺序不变(如归并排序),不稳定算法可能改变(如快速排序)。

  2. 适用场景

    • 小规模数据:冒泡、插入、选择排序(简单但效率低)。
    • 大规模数据:快速、归并、堆排序(O(n log n) 复杂度)。
    • 特定数据分布
      • 整数且范围小:计数排序。
      • 均匀分布数据:桶排序。
      • 多关键字排序:基数排序。
  3. 空间复杂度

    • 原地排序:冒泡、插入、选择、希尔、堆排序(O(1) 空间)。
    • 非原地排序:归并、计数、桶、基数排序(需额外空间)。
  4. 快速排序优化

    • 三数取中法:避免最坏情况 O(n²)。
    • 小数组切换插入排序:递归到小数组时用插入排序提升效率。

面试常见问题

  1. 为什么快速排序在实际应用中比归并排序更常用?

    • 快速排序是原地排序,缓存友好;归并排序需要 O(n) 额外空间。
  2. 堆排序为什么不如快速排序快?

    • 堆排序数据访问方式跳跃(非局部性原理),缓存命中率低。
  3. 如何选择排序算法?

    • 数据规模、内存限制、稳定性需求、数据分布特征。

相关文章:

  • langfuse追踪Trace
  • 数据结构与算法--数字转字符串方法数
  • 数据结构之栈(C语言)
  • RabbitMQ实现路由模式发送接收消息
  • “零拷贝”(Zero-Copy)技术详解以及使用场景
  • 内网渗透-端口转发
  • 【NLP 40、文本生成任务】
  • 【AI大模型】搭建本地大模型GPT-NeoX:详细步骤及常见问题处理
  • 通往自主智能之路:探索自我成长的AI
  • 图像处理全流程指南(OpenCV 实现)
  • 2025-03-23 学习记录--C/C++-C语言 sprintf()实现将多个值按指定格式拼接成字符串
  • 国产达梦(DM)数据库的安装(Linux系统)
  • 设计模式:创建型、结构型、行为型
  • Linux 系统运行 Android 应用的几种方案
  • 为什么EasyExcel能处理大数据量而不内存溢出,EasyExcel原理
  • Linux__之__基于UDP的Socket编程网络通信
  • LLaMA-Factory微调大模型
  • 网络爬虫-4:jsonpath+实战
  • 一个轻量级的 SQLite ORM 工具包
  • c++测试题
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 国务院关税税则委:调整对原产于美国的进口商品加征关税措施
  • 受美关税影响,本田预计新财年净利下降七成,并推迟加拿大建厂计划
  • 字母哥动了离开的心思,他和雄鹿队的缘分早就到了头
  • 吉林:消纳绿电,“氢”装上阵
  • 从600名外到跻身大满贯,孙发京:走过的路成就了现在的我