自定义数组选择排序c++
时间: 2024-09-30 14:07:59 浏览: 27
IntArraySample1.rar_自定义数组
在C++中,自定义数组的选择排序通常会包含一个`swap`函数来进行元素交换,以及一个`select_min`函数用于查找并交换数组中的最小元素。下面是一个简单的自定义选择排序的示例,适用于任意类型的数组(这里假设我们有一个`Comparable`模板类作为基础):
```cpp
template <typename T>
class Comparable {
public:
bool operator<(const T& other) const {
return *this < other;
}
};
template <typename T>
void selectionSort(T* arr, int n) {
for (int i = 0; i < n - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < n; ++j) {
if (arr[j].operator()< arr[minIndex]) {
minIndex = j;
}
}
// 使用通用的swap函数交换元素
swap(arr[minIndex], arr[i]);
}
}
// 定义一个通用的swap函数
template <typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
int main() {
Comparable<int> numbers[] = {5, 9, 1, 7, 4, 6, 8, 2, 3};
int n = sizeof(numbers) / sizeof(numbers[0]);
cout << "原始数组:\n";
for (int i = 0; i < n; i++) {
cout << numbers[i] << " ";
}
selectionSort(numbers, n);
cout << "\n排序后的数组:\n";
for (int i = 0; i < n; i++) {
cout << numbers[i] << " ";
}
return 0;
}
```
这个程序首先定义了一个`Comparable`模板类,使得我们可以比较任何支持小于运算的对象。然后在`selectionSort`函数中,通过`operator<`操作符找出最小元素并进行交换。
阅读全文