输入任意10个数对10个数进行排序C++语言
时间: 2024-09-26 17:11:21 浏览: 10
在C++中,我们可以使用多种算法对数对进行排序,例如冒泡排序、选择排序、插入排序或更高效的快速排序或归并排序。这里我们以快速排序为例,这是一种常用的比较排序算法,因为它的平均时间复杂度较低。
以下是使用C++实现对10个数对进行排序的一个简单示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 对数对元组进行比较
bool compare(vector<pair<int, int>>& pairs, size_t i, size_t j) {
return pairs[i].first < pairs[j].first || (pairs[i].first == pairs[j].first && pairs[i].second < pairs[j].second);
}
void quickSort(vector<pair<int, int>>& pairs, size_t low, size_t high) {
if (low < high) {
size_t pivotIndex = partition(pairs, low, high);
quickSort(pairs, low, pivotIndex - 1);
quickSort(pairs, pivotIndex + 1, high);
}
}
size_t partition(vector<pair<int, int>>& pairs, size_t low, size_t high) {
pair<int, int> pivot = pairs[high];
size_t i = low - 1;
for (size_t j = low; j < high; ++j) {
if (compare(pairs, i, j)) {
swap(pairs[i + 1], pairs[j]);
i++;
}
}
swap(pairs[i + 1], pairs[high]);
return i + 1;
}
int main() {
vector<pair<int, int>> numbers = {{5, 3}, {2, 7}, {8, 1}, {1, 9}, {6, 4}};
cout << "Before sorting:\n";
for (const auto& pair : numbers) {
cout << "(" << pair.first << ", " << pair.second << ") ";
}
quickSort(numbers, 0, numbers.size() - 1);
cout << "\nAfter sorting:\n";
for (const auto& pair : numbers) {
cout << "(" << pair.first << ", " << pair.second << ") ";
}
return 0;
}
```
这个程序首先定义了一个`pair<int, int>`结构体用于存储两个整数,然后使用`quickSort`函数实现了快速排序算法。`compare`函数定义了排序规则,`partition`函数则辅助完成了分割操作。