简单选择排序是一种直观的排序算法,通过多次遍历未排序部分选出最小(或最大)元素,逐步完成整体排序。其核心思想是*“选择-交换”*,时间复杂度为$O(n^2)$,适合小规模数据但效率低于快速排序等高级算法。
-
算法步骤图解
- 初始状态:将数组分为已排序(初始为空)和未排序两部分。
- 选择最小值:遍历未排序部分,找到最小元素的下标。
- 交换位置:将最小元素与未排序部分的第一个元素交换,扩大已排序区间。
- 重复操作:直至未排序部分只剩一个元素,排序完成。
-
性能分析
- 时间复杂度:无论数据是否有序,均需执行$$(n-1)+(n-2)+...+1 = \frac{n(n-1)}{2}$$次比较,即$O(n^2)$。
- 空间复杂度:仅需常数级临时空间(如交换变量),为$O(1)$,属于原地排序。
- 稳定性:因交换可能破坏相同元素的原始顺序,属于不稳定排序(如[5, 5, 2]首次交换后第一个5会移到2之后)。
-
适用场景与局限性
- 优点:逻辑简单,代码易实现,适合教学或数据量极小的场景。
- 缺点:大规模数据效率低,实践中常被更高效的算法(如归并排序、堆排序)替代。
总结:简单选择排序是理解排序思想的入门算法,虽效率有限,但清晰的流程有助于掌握“选择”这一核心操作。实际应用中需权衡数据规模与性能需求。