首页 > 解决方案 > 排序并行数组

问题描述

我有两个数组。一个是卷号,另一个是卷号的总分。我必须按升序对卷号数组进行排序,同时保留分配给每个卷号的数据。我已经对数组进行了排序,但是如何根据卷号放置标记?

这是到目前为止的代码。

int roll_num[5] = { 2, 4, 1, 6, 8 }, total_marks[5] = { 9, 7, 10, 8, 9 }, min=0, temp, size = 5;
    for (int i = 0; i <= size; i++)
    {
        min = i;
        for (int j = i + 1; j < size; j++)
        {
            if (roll_num[j] < roll_num[min])
            {
                min = j;
            }
        }
        swap(roll_num[i], roll_num[min]);
    }
    cout << "Roll No." << " " << "Total Marks" << endl;
    for (int i = 0; i < size; i++)
    {
        cout << roll_num[i] << "       |     " << total_marks[i] << endl;
    }

标签: c++

解决方案


您可能希望将这两个数组组合成一个std::map。然后它将被排序并连接您的值:

int roll_num[5] = { 2, 4, 1, 6, 8 };
int total_marks[5] = { 9, 7, 10, 8, 9 };
std::map<int, int> my_map;
for (int i=0; i < 5; ++i) {
    my_map.insert(roll_num[i], total_marks[i]);
}

如果您希望它们按roll_num.


推荐阅读