选择算法c++进行模板份文件编写基础上添加升序降序功能的代码
时间: 2024-04-09 14:34:07 浏览: 115
以下是一个基于模板的 C++ 实现的选择排序算法,并添加了升序和降序功能的代码:
```cpp
#include <iostream>
#include <vector>
template <typename T>
void selectionSort(std::vector<T>& arr, bool ascending = true) {
int n = arr.size();
for (int i = 0; i < n - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < n; ++j) {
if (ascending) {
if (arr[j] < arr[minIndex])
minIndex = j;
} else {
if (arr[j] > arr[minIndex])
minIndex = j;
}
}
std::swap(arr[i], arr[minIndex]);
}
}
int main() {
std::vector<int> arr = {5, 2, 9, 1, 3};
std::cout << "Original array: ";
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
// 升序排序
selectionSort(arr);
std::cout << "Ascending order: ";
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
// 降序排序
selectionSort(arr, false);
std::cout << "Descending order: ";
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
在上述代码中,我们使用了一个模板函数 `selectionSort` 来实现选择排序算法。该函数接受一个模板类型 `T` 的向量 `arr`,并可选地指定排序顺序,默认为升序。我们使用嵌套的循环来找到未排序部分的最小(或最大)元素,并将其与未排序部分的第一个元素交换,以便逐步构建有序序列。在 `main` 函数中,我们演示了如何使用该函数来对整数向量进行排序,并打印结果。首先,我们对原始数组进行升序排序,然后对其进行降序排序。
阅读全文