将一组数据从大到小排列后输出,要求显示每个元素及它们在原数组中的下标位置。【可以自定义数据内容和类型,编写c++程序
时间: 2024-10-11 14:13:08 浏览: 13
在C++中,你可以使用标准库中的`std::sort`函数配合迭代器来对数组进行排序,并在排序的同时记录下标。这里是一个简单的示例,假设我们有一个整数类型的动态数组:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 自定义比较函数,用于降序排列并保存下标
bool compare(const std::pair<int, int>& a, const std::pair<int, int>& b) {
return a.first > b.first;
}
void print_sorted_with_indices(std::vector<int>& arr) {
std::vector<std::pair<int, int>> sorted_data(arr.size());
// 复制数组并按值排序,同时记录下标
for (size_t i = 0; i < arr.size(); ++i) {
sorted_data[i] = {arr[i], i};
}
// 使用自定义比较函数进行降序排列
std::sort(sorted_data.begin(), sorted_data.end(), compare);
// 输出结果
for (const auto& pair : sorted_data) {
std::cout << "Value: " << pair.first << ", Index: " << pair.second << "\n";
}
}
int main() {
std::vector<int> data = {5, 3, 8, 1, 9, 2}; // 示例数据
print_sorted_with_indices(data);
return 0;
}
```
当你运行这个程序时,它会按照数值大小将数组`data`从大到小排列,并打印出每个元素及其原始下标。
阅读全文