一句话理解
选择排序:每次在未排序里选最小的放到当前位置。
为什么要学
交换次数少,但比较仍是 n²。
讲解
第 i 轮在 i..n-1 找最小,与 a[i] 交换。
不稳定:相等元素相对顺序可能变。
例子
for (int i = 0; i < n; i++) {
int k = i;
for (int j = i + 1; j < n; j++)
if (a[j] < a[k]) k = j;
swap(a[i], a[k]);
}
每轮选择一个最小值放到前面。
常见错误
- k 初始化错。
- 内层从 0 开始把已排好的又打乱。