请用C++实现上述算法
时间: 2023-08-02 18:11:29 浏览: 50
这里给出一个C++的示例代码,实现了上述算法:
```c++
#include <iostream>
#include <vector>
std::vector<int> selectionSort(std::vector<int> arr) {
int n = arr.size();
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
std::swap(arr[minIndex], arr[i]);
}
}
return arr;
}
int main() {
std::vector<int> arr = {3, 5, 1, 2, 4};
std::vector<int> sortedArr = selectionSort(arr);
for (int i : sortedArr) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
在上述代码中,`selectionSort`函数接受一个整数数组作为参数,并返回排序后的数组。函数中使用两层循环实现选择排序算法,外层循环控制每次选择最小值的位置,内层循环用于查找当前未排序区间中的最小值。当内层循环结束后,如果最小值的位置不是当前未排序区间的第一个位置,则交换这两个位置上的元素。最后,函数返回排序后的数组。
在`main`函数中,我们创建一个整数数组`arr`,然后调用`selectionSort`函数对其进行排序,并将排序后的结果输出到控制台上。