跳到主要内容

排序概述

排序将序列按关键字递增或递减重新排列。它是算法课的核心训练场,也直接出现在系统、数据库、竞赛与工程中。

本文解决什么问题

  • 排序如何分类
  • 用哪些维度评价算法
  • 本章各篇地图

本部分学什么

类别文章
插入类直接插入希尔
交换类冒泡快速
选择类简单选择堆排序
归并类归并排序
分配类基数排序
对比排序算法比较

评价维度

维度含义
时间最好 / 平均 / 最坏
空间是否原地(额外 O(1)O(1)
稳定性相等关键字是否保持相对次序
适应性对基本有序数据是否更快
稳定性为何重要

多关键字排序时,先按次关键字排、再按主关键字用稳定排序,可保留次关键字次序。

学习建议

  1. 每个算法先跑通一个小数组手算
  2. 再默写代码,核对边界(n=0/1、已有序、逆序、含重复)
  3. 最后看 比较篇 做选型

工程中优先 std::sort / std::stable_sort;本教程手写是为了理解代价与思想。

小结

先建立「分类 + 评价指标」,再逐个算法动手。下一篇:直接插入排序