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

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

算法>排序算法对比表

算法>排序算法最佳时间复杂度平均时间复杂度最差时间复杂度空间复杂度稳定性核心思想
冒泡排序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. 如何选择算法>排序算法

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

http://www.ppmy.cn/embedded/176610.html

相关文章

Typora安装使用教程 简单易用的Markdown编辑器

Typora markdown 编辑器下,最后一个免费版本 0.11.18,但可能会提示过期无法使用, 建议大家可以使用 0.9.96 Windows 版,下载 Windows X64 版。 Typora简介 Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,与其他 Mark…

论华为 Pura X 折叠屏性能检测

在科技浪潮中,折叠屏手机以其创新形态掀起市场热潮。华为 Pura X 作为华为最新折叠手机,承载前沿科技与精湛工艺,成为行业焦点。它融合先进折叠屏技术与优质材质,致力于打破传统手机使用边界,为用户开启全新体验。但产…

《鸟哥的Linux私房菜基础篇》---5 vim 程序编辑器

目录 一、vim程序编辑器的简介 二、命令模式快捷键(默认模式) 1、光标移动 2、编辑操作 3、搜索与替换 三、插入模式快捷键 四、底行模式快捷键(按:进入) 五、高级技巧 1、分屏操作 2、多文件编辑 3、可视化…

kube-vip实践

kube-vip 是一款专为 Kubernetes 设计的轻量级高可用(HA)和负载均衡工具,通过虚拟 IP(VIP)机制实现控制平面和服务的高可用性。以下从核心原理、部署实践到高级配置进行全面解析。 一、核心原理与模式 kube-vip 通过…

MySQL 中,查看执行频次、慢查询日志、SHOW PROFILE和 EXPLAIN性能分析和优化

在 MySQL 中,查看执行频次、慢查询日志、SHOW PROFILE 和 EXPLAIN 是性能分析和优化的核心工具。以下是它们的详细用法和高级语法: 一、查看 SQL 执行频次 通过 SHOW STATUS 命令可以查看 SQL 的执行频次,帮助定位高频查询。 1. 查看全局 SQL 执行频次 SHOW GLOBAL STATU…

2020年全国职业院校技能大赛改革试点赛高职组“云计算”竞赛赛卷第二场次题目:容器云平台部署与运维

2020年全国职业院校技能大赛改革试点赛高职组 “云计算”竞赛赛卷 第二场次题目:容器云平台部署与运维 说明:本任务提供有2台服务器master和node,都安装了centos7.5操作系统,在/opt/centos目录下有CentOS-7-x86_64-DVD-1804系统光盘文件所有文件,在/opt/containerk8s目…

Prometheus Exporter系列-Mysql_Exporter一键部署

新项目旧项目都需要给研发配置mysql监控,这里mysql监控对应aws 阿里云 腾讯云 华为云的云mysql产品或开源自建mysql。 exporter安装虽然简单,经常手动操作不免让人心烦,一键完成省去繁琐的常规操作。 配置信息对的情况下测试多次都可以正常安…

如何通过 iTick 外汇数据 API 与 Cursor AI 实现量化策略开发

在外汇交易领域,利用外汇数据 API 接口获取实时市场数据并结合量化策略实现自动化交易已成为趋势。本文将介绍如何通过 iTick 免费外汇报价 API 接口与 Cursor AI 代码工具快速实现量化策略的自动编写与部署,涵盖外汇数据 API 调用、策略逻辑生成、代码自…