选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要特点是每次都选择剩余元素中的最值,因此得名"选择排序"。
选择排序的基本思想可以概括为:
这个过程会将数组分为两部分:
以升序排列为例,选择排序的详细步骤:
假设有数组 [64, 25, 12, 22, 11]:
for i in range(n) 控制当前要填充的位置,从0到n-1min_index = i 假设当前位置就是最小值位置for j in range(i + 1, n) 在剩余未排序部分中寻找最小值min_index比较次数计算:
| 特性 | 选择排序 | 冒泡排序 | 插入排序 |
|---|---|---|---|
| 时间复杂度 | O(n²) | O(n²) | O(n²) |
| 空间复杂度 | O(1) | O(1) | O(1) |
| 稳定性 | 不稳定 | 稳定 | 稳定 |
| 交换次数 | O(n) | O(n²) | O(n²) |
| 适应性 | 无 | 有 | 有 |
选择排序适用于以下场景:
通过学习选择排序,你将理解排序算法的基本思想,为学习更高效的排序算法打下基础。