答案 0 :(得分:0)
对4个并行数组进行排序的方式与对单个数组进行排序的方式完全相同,除了在交换单个数组的两个值的部分之外,您可以在所有4个数组中交换相应的索引。
另一种方法是将数组“压缩”为单个类对象数组并对其进行排序。这允许您使用常规排序算法而不更改交换,但当然需要对并行数组进行压缩和解压缩。
答案 1 :(得分:0)
对并行数组进行排序的一种方法是不对数组本身进行排序,而是将指向第一个,第二个,第三个等项的索引值数组排序到数组中。
以下是一个例子:
#include <iostream>
#include <algorithm>
#include <string>
int main()
{
std::string names[5] = { "Jack", "Joe", "Alice", "Bob", "Carol" };
int grades[5] = { 80, 75, 90, 95, 68 };
//...
int index[5] = { 0,1,2,3,4 };
//...
// perform bubble sort on the grades in ascending order
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 4; ++j)
if (grades[index[j]] > grades[index[j+1]])
std::swap(index[j], index[j+1]);
}
// print out the sorted values, sorted by grade in ascending order
for (int i = 0; i < 5; ++i)
std::cout << names[index[i]] << " " << grades[index[i]] << "\n";
}
请注意,实际交换的唯一内容是索引数组中的值。具有实际数据的数组永远不会更改。