排序

排序(Sorting)是将一组数据元素按关键字递增或递减排列的过程,是计算机科学中最基础、应用最广泛的问题之一。数据库索引、搜索结果、成绩排名、快递分拣……背后都依赖高效的排序算法。

本章要解决的问题

面对不同规模、不同初始状态的数据,如何选择最合适的排序算法?稳定性、空间开销如何权衡?本章系统介绍各类内部排序与外部排序算法,帮助你在实际应用中做出正确选择。

基本概念

  • 排序:将一组数据元素按关键字递增或递减排列
  • 稳定性:相等元素排序前后相对位置不变(稳定/不稳定)
  • 评价指标:时间复杂度、空间复杂度、稳定性

学习目标

  • 掌握插入、交换、选择、归并、基数五大类排序算法的原理
  • 能写出每种排序的核心代码并分析复杂度
  • 理解稳定性与适用场景,能根据数据特点选型
  • 了解外部排序与多路归并的基本思想

章节导航

子章节算法类别平均时间复杂度稳定性
排序的起源与实际意义概述--
插入排序插入O(n2)O(n^2)稳定
冒泡排序交换O(n2)O(n^2)稳定
选择排序选择O(n2)O(n^2)不稳定
希尔排序插入(改进)O(n1.3)O(n^{1.3})不稳定
快速排序交换O(nlogn)O(n\log n)不稳定
堆排序选择O(nlogn)O(n\log n)不稳定
归并排序归并O(nlogn)O(n\log n)稳定
基数排序非比较O(d(n+r))O(d(n+r))稳定
外部排序外部O(nlogn)O(n\log n)-
各种排序算法的比较综合对比--

建议阅读顺序

基础路线:插入排序 → 冒泡排序 → 选择排序,掌握 O(n2)O(n^2) 级简单排序。

进阶路线:快速排序 → 归并排序 → 堆排序,理解分治与堆结构。

扩展路线:希尔排序 → 基数排序 → 外部排序,了解改进与非比较排序。

章节