Level 2 · 算法入门

排序基础

先懂手写排序的思想,再用比赛真正常用的 STL sort。配套动画:visualgo.net/en/sorting

一、五种排序速览

排序思想时间复杂度
冒泡 Bubble相邻比较,大的往后冒O(n²)
选择 Selection每轮挑最小放前面O(n²)
插入 Insertion像理扑克牌逐个插入O(n²)
计数 Counting开桶数数O(n+值域)
快速 Quick选基准分两半递归O(n log n)

二、互动演示:冒泡排序一步步跑

数组 [5, 2, 4, 1, 3]。蓝色=正在比较,橙色=发生交换,绿色=已归位。

三、比赛实战:STL sort

#include <algorithm>
using namespace std;

int a[1005];
sort(a, a + n);                  // 升序
sort(a, a + n, greater<int>());  // 降序

// 结构体按字段排序
bool cmp(const Node& x, const Node& y) {
    return x.score > y.score;    // 按分数从高到低
}
sort(arr, arr + n, cmp);

sort 是 O(n log n),绝大多数题目直接用它。手写排序主要出现在阅读程序题。