在C/C++中,对2D数组进行排序并找到排序后的原始位置,可以通过以下步骤实现:
以下是一个示例代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Element {
int value;
int row;
int col;
};
bool compare(const Element &a, const Element &b) {
return a.value < b.value;
}
int main() {
int arr[3][3] = {
{9, 4, 5},
{7, 2, 1},
{8, 3, 6}
};
vector<Element> elements;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
elements.push_back({arr[i][j], i, j});
}
}
sort(elements.begin(), elements.end(), compare);
for (const auto &e : elements) {
cout << "Value: " << e.value << ", Original position: (" << e.row << ", " << e.col << ")"<< endl;
}
return 0;
}
输出结果:
Value: 1, Original position: (1, 2)
Value: 2, Original position: (1, 1)
Value: 3, Original position: (2, 2)
Value: 4, Original position: (0, 1)
Value: 5, Original position: (0, 2)
Value: 6, Original position: (2, 0)
Value: 7, Original position: (1, 0)
Value: 8, Original position: (2, 1)
Value: 9, Original position: (0, 0)
这个示例代码首先将2D数组中的元素及其原始位置存储在一个结构体数组中,然后使用std::sort
函数对结构体数组进行排序,最后输出排序后的结果及其原始位置。
领取专属 10元无门槛券
手把手带您无忧上云