我这里有一个矩阵,我想要的是将它的元素复制到2dim数组或向量向量中(我更喜欢它)并以保持其索引的方式对它们进行排序。
例如对于这个矩阵,我想保留这些数据:(这些数据包含索引并对它们进行排序)
1-5
1-2
2-4
4-5
2-5
1-4
3-5
1-3
3-4
2-3
现在您建议哪一个,我该怎么做?
答案 0 :(得分:1)
#include <vector> // for std::vector
#include <algorithm> // for std::sort
// your matrix
int matrix[5][5] = { ... };
// we use a struct to store entries with coordiantes
struct Entry {
int row, col;
int value;
};
// copy matrix data to vector
std::vector<Entry> entries;
for(int i=0; i<5; i++) {
for(int j=i+1; j<5; j++) {
entries.push_back({i,j,matrix[i][j]});
}
}
// sort vector
std::sort(entries.begin(), entries.end(),
[](const Entry& a, const Entry& b) {
return a.value> b.value;
});
答案 1 :(得分:0)
我想说使用链表。为每个元素创建一个NODE,使每个节点具有以下
node{
int data;
int row;
int col;
node *next;
}
将每个节点放在一个数组中,以便有节点数组。
完成后,您可以使用每个节点的数据成员对数组进行排序。
由于节点的row和col部分没有改变,你可以使用它来保留矩阵中每个元素的位置。