1. 算法简介
选择排序是一种简单直观的比较排序算法。它的基本思想是:每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
- 分类:内部排序、比较排序、非稳定排序
- 适用场景:数据量较小或对稳定性无要求的简单任务
2. 算法原理与步骤
以升序排序为例:
- 初始状态:整个数组为无序区。
- 第 i 轮(i 从 0 开始):
- 在无序区
[i, n-1]中找到最小元素的下标minIndex。 - 将
arr[i]与arr[minIndex]交换。此时arr[i]成为有序区的最后一个元素,无序区长度减1。
- 在无序区
- 重复步骤2,直到 i 到达 n-1(只剩一个元素时自然有序)。
3. 代码实现
int arr[5] = {6, 3, 8, 2, 5}; // 假设5个数据
for (int i = 0; i < 5 - 1; i++) {
int minIdx = i;
for (int j = i + 1; j < 5; j++) {
if (arr[j] < arr[minIdx])
minIdx = j;
}
swap(arr[i], arr[minIdx]);
}
for (int i = 0; i < 5 - 1; i++) {
cout << arr[i] << " ";
}