2013-02-28 96 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