心月狐
cxy0218
首页课程项目归档照片墙音乐说说学习资料打卡杂谈创意工坊关于
封面

算法与数据结构:排序算法到底怎么选

写作时间:2026-10-14 19:30:00
# 算法
# 数据结构
# 复杂度

先看复杂度与稳定性

算法 平均 最坏 额外空间 稳定性
冒泡排序 O(n²) O(n²) O(1) 稳定
插入排序 O(n²) O(n²) O(1) 稳定
归并排序 O(n log n) O(n log n) O(n) 稳定
快速排序 O(n log n) O(n²) O(log n) 不稳定
堆排序 O(n log n) O(n log n) O(1) 不稳定

实际怎么选

  1. 数据量小、或者基本有序:插入排序往往最快,常数因子小,也没有递归开销。
  2. 要求稳定(例如多关键字排序):选归并排序,或者至少用稳定的算法。
  3. 平均要快、内存不宽裕:快速排序,但基准点的取法要小心,否则在已排序数据上会退化成 O(n²)。
  4. 最坏情况也不能退化:堆排序,代价是常数更大而且不稳定。

一个容易忽略的点

很多语言标准库里的排序并不是单一算法,而是混合策略:数据量小的时候退化成插入排序,规模大了再切到快速排序或归并排序。所以实际写代码时先看标准库,不必急着手写。

小结

选排序先问三个问题:数据规模多大、需不需要稳定、最坏情况能不能接受。想清楚这三件事,选择基本就定下来了。

avatar

cxy0218

海南比勒费尔德应用科学大学计算机科学专业 2025 级本科生,正在学习编程、算法与数据结构、操作系统、人工智能基础,以及德语和英语。

RECOMMENDED

给博客养一只 AI 桌宠:九个动作状态 + 番茄钟联动 + 接入 DeepSeek

2026-10-16 11:30:00

把博客从 C 盘搬到 D 盘:一次环境迁移的踩坑记录

2026-10-14 21:30:00

给博客加一个「时间段打卡」:从需求到上线的完整记录

2026-10-16 10:00:00

Table of Contents

心月狐桌宠