2013-02-28 91 views
2

我想排序两组数据,即在二维数组或平行数组,无论哪种方式,它没有什么区别,但我似乎无法弄清楚。这里有两个数组:排序一个二维数组

/////way one/// 

int id[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
int numDetected[10] = {40, 21, 2, 19, 45, 32,43, 90, 100, 8}; 

int 2dArray[2][10]; 

它没有什么区别,但我似乎无法想出解决办法。

我想通过numDetected数量将数组排序到一个新数组中(无论是2d数组还是parrellel数组)。所以最大的numDetected位于元素零,最小。但是在做这件事时,我想保留与numDetected相同的元素中的id。因此,如果numDetected[2]是最大的,我希望numDetected[2]id[2]成为新阵列中的第一个元素。

谁能帮助我吗?

+0

会不会更容易有一个'struct item {int id; int numDetected; }'和这些结构的容器?最好'运算符<'为该结构?这会让它变得更容易。 – 2013-02-28 23:10:52

回答

1
struct values 
{ 
    int id; 
    int detected; 
} data[10] = ...; 

// intentionally reversed to cause sort in descending order 
bool operator<(const values& left, const values& right) { return left.detected > right.deteted; } 

values *begin = data, *end = (&data)[1]; 
std::sort(begin, end); 
+1

很高兴看到我的想法是你想出来的。 :) – 2013-02-28 23:11:43

+0

@DanielKamilKozar:他们说伟大的思想家都一样。 – 2013-02-28 23:12:17

+4

我不明白你在用'(&data)[1]'做什么。那是什么? – 0x499602D2 2013-02-28 23:16:58