void SelectSort(int r[ ], int n) { int i, j, index, temp; for (i = 0; i < n - 1; i++) //进行n-1趟选择排序 { index = i; for (j = i + 1; j < n; j++) //在无序区中查找最小记录 if (r[j] < r[index]) index = j; if(i != index){ temp = r[i]; r[i] = r[index]; r[index] = temp; } } }
时间: 2024-01-18 12:03:16 浏览: 23
这是一个简单选择排序的实现,下面是对代码的解释:
```c++
void SelectSort(int r[], int n) {
int i, j, index, temp;
for (i = 0; i < n - 1; i++) { // 进行 n-1 趟选择排序
index = i; // 假设 i 处的元素是最小的
for (j = i + 1; j < n; j++) { // 在无序区中查找最小记录
if (r[j] < r[index]) {
index = j; // 更新最小元素的下标
}
}
if (i != index) { // 如果 i 处的元素不是最小的,则交换 i 和 index 处的元素
temp = r[i];
r[i] = r[index];
r[index] = temp;
}
}
}
```
该算法的基本思路是,每次从无序区中找出最小的元素,将其放到有序区的末尾。具体步骤如下:
1. 假设第 i 个元素是无序区中的最小元素;
2. 在无序区中查找最小元素,并更新其下标为 index;
3. 如果 i 不等于 index,则交换 i 和 index 处的元素;
4. 重复上述步骤,直到所有元素都排好序为止。
该算法的时间复杂度为O(n^2),空间复杂度为O(1),是一种不稳定的排序算法。