在2dim的情况下对索引进行排序和保留?

时间:2014-04-08 18:51:51

标签: c++ arrays sorting vector

我这里有一个矩阵,我想要的是将它的元素复制到2dim数组或向量向量中(我更喜欢它)并以保持其索引的方式对它们进行排序。 This is the matrix that I have:

例如对于这个矩阵,我想保留这些数据:(这些数据包含索引并对它们进行排序)

1-5
1-2
2-4
4-5
2-5
1-4
3-5
1-3
3-4
2-3

现在您建议哪一个,我该怎么做?

2 个答案:

答案 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部分没有改变,你可以使用它来保留矩阵中每个元素的位置。