Skip to content

06 排序算法-上:O(n^2) 三兄弟

李永乐式比喻:你手里有一堆乱序的扑克牌——

  • 冒泡排序:从左到右,两两比较,大的往后换。就像水里的气泡,大的慢慢冒到右边
  • 选择排序:把整副牌扫一遍,找到最小的放第一张;再从剩下的牌里找最小的放第二张……每次选个最小的
  • 插入排序:就像打牌时整理手牌——新拿一张牌,插到手中已排好序的牌的正确位置。

三兄弟对比


性能对比(10,000 条数据)

算法比较次数交换次数实际耗时特点
冒泡排序~5000 万次~2500 万次~2 秒稳定、可提前终止
选择排序~5000 万次10000 次~1.5 秒不稳定、但交换最少
插入排序~2500 万次~2500 万次~1 秒稳定、近似有序时最快

AI 生成这三兄弟的代码只需 10~15 行 Python。重要的是理解趋势:数据量翻 10 倍,时间慢 100 倍。这就是 O(n^2) 的威力。


企业场景

  • 冒泡:几乎不用(教学价值 > 实用价值)
  • 选择:数据很小(< 1000)且交换成本高
  • 插入TimSort(Python/Java 内置排序)在数据近乎有序时用的就是插入排序!你每天用的 .sort() 底层都包含它

AI 协作

AI 生成:
  - 三种排序的 Python 实现 -- 各 5~10 行
  - 生成不同数据规模(100/1000/10000)的耗时对比图

人类决策:
  - 数据量 < 1000 且简单场景 -> 插入排序即可
  - 数据量 > 10000 -> 用 O(n log n) 算法

OPC 超级个体实战指南