选择排序:每次选最小的放前面
有一种排序方式特别"直白"——每次从一堆数里挑出最小的,放到最前面,再挑第二小的,放到第二个……就这么简单粗暴。
一、核心思想:每次选最小的
选择排序的思路非常直观:
第1轮:从 n 个元素中选出最小的,放到第1个位置
第2轮:从剩下 n-1 个元素中选出最小的,放到第2个位置
……依此类推,直到所有元素排好序。
就像你有一堆打乱的扑克牌:
- 先看一遍,找到最小的那张(比如 2),放到最左边
- 再看剩下的,找到第二小的(比如 3),放到第二个位置
- 一直找,一直放,直到全部排好
二、具体怎么操作?
以[5, 3, 8, 1, 2]为例(升序排序):
初始:[5, 3, 8, 1, 2]
第1轮:从5个元素中找最小值
- 扫描:5→3→8→1→2,最小是 1(下标3)
- 交换 5 和 1 →
[1, 3, 8, 5, 2]
第2轮:从剩下4个元素中找最小值
- 扫