对2d数组进行排序

时间:2013-02-28 23:04:30

标签: c++ arrays 2d

我正在尝试对两组数据进行排序,无论是二维数组还是并行数组,无论哪种方式都没有区别,但我似乎无法弄明白。以下是两个数组:

/////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位于元素零处,最小位于结尾处。但是在执行此操作时,我希望将与该关联的id保持在与numDetected相同的元素中。因此,如果numDetected[2]是最大的,我希望numDetected[2]id[2]成为新数组中的第一个元素。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分: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);