http://iotekimg.zhizuobiao.com/communityQuestion/10/10_1529397307885.png
时间: 2023-10-31 15:21:43 浏览: 33
这道题的思路是:
1. 从数组的第一个元素开始,依次找到第 i 小的元素,并将该元素与第 i 个位置的元素互换位置。
2. 在每一轮寻找第 i 小元素的过程中,从 i+1 开始遍历数组,找到最小的元素,并记录下标。
3. 将找到的最小元素与第 i 个位置的元素互换位置。
下面是对应的 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
void selectionSort(int arr[], int n) {
for (int i = 0; i < n; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
swap(arr[i], arr[minIndex]);
}
}
int main() {
int arr[] = {10, 2, 8, 5, 4, 7, 6, 3, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
cout << "排序后的数组为: {";
for (int i = 0; i < n - 1; i++) {
cout << arr[i] << ", ";
}
cout << arr[n - 1] << "}" << endl;
return 0;
}
```
运行结果:
```
排序后的数组为: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
```