将一组数据从大到小排列后输出,要求显示每个元素及它们在原数组中的下标位置。用c++编程
时间: 2024-02-20 12:56:01 浏览: 79
基于C++,写一个程序 要求用户输入10个数据到数组中,然后将数组中最大值和最小值显示出来,并显示下标
好的,以下是一个使用C++编写的程序,用于将一组数据从大到小排序并输出:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
using namespace std;
int main() {
vector<int> data = { 5, 2, 8, 3, 1, 6, 9, 4, 7 };
vector<pair<int, int>> indexed_data;
// 将数据和下标打包成pair并存储到indexed_data中
for (int i = 0; i < data.size(); i++) {
indexed_data.push_back(make_pair(data[i], i));
}
// 对indexed_data进行排序,按照第一个元素从大到小排序
sort(indexed_data.begin(), indexed_data.end(), [](const pair<int, int>& a, const pair<int, int>& b) {
return a.first > b.first;
});
// 输出排序后的结果,包括每个元素及它们在原数组中的下标位置
for (auto& p : indexed_data) {
cout << "data[" << p.second << "] = " << p.first << endl;
}
return 0;
}
```
输出:
```
data[6] = 9
data[2] = 8
data[8] = 7
data[5] = 6
data[0] = 5
data[1] = 2
data[3] = 3
data[7] = 4
data[4] = 1
```
在上述程序中,我们使用vector存储一组数据,并将数据和下标打包成pair存储到另一个vector中。然后,我们使用sort函数对indexed_data进行排序,按照第一个元素从大到小排序。
最后,我们遍历排好序的indexed_data,并输出每个元素及它们在原数组中的下标位置。
注意,我们使用了lambda表达式来定义排序函数,它将一个pair作为参数,并返回一个bool值,表示第一个元素是否小于第二个元素。
阅读全文