选择排序的核心想法是:每一轮从未排序区间里找出最小值,再把它放到未排序区间的开头。放好之后,这个位置就不会再改变。
它不像冒泡排序那样频繁交换,相比之下,选择排序的比较次数固定,交换次数最多只有 n 次。
复杂度
- 时间:最好、平均、最坏都是 O(n²)
- 空间:O(1),原地排序
- 稳定性:通常实现不稳定,因为最后的交换可能改变相同元素的相对顺序
在动画里看什么
- 紫色:当前记录的最小值位置
- 蓝色:正在和最小值比较的元素
- 红色:把最小值交换到前面
- 绿色:已经就位的有序前缀
排序
选择排序的核心想法是:每一轮从未排序区间里找出最小值,再把它放到未排序区间的开头。放好之后,这个位置就不会再改变。
它不像冒泡排序那样频繁交换,相比之下,选择排序的比较次数固定,交换次数最多只有 n 次。