我们得到两个数组。我们需要对另一个数组进行排序。
例子:
Input : 2 1 5 4 9 3 6 7 10 8
A B C D E F G H I J
Output : 1 2 3 4 5 6 7 8 9 10
B A F D C G H J E I
Here we are sorting second array
(a character array) according to
the first array (an integer array).
我们在下面的帖子中讨论了不同的方式。
根据另一个数组定义的顺序对一个数组进行排序
在本文中,我们将重点介绍使用C++ STL中存在的对容器。
为了完成我们的工作,我们将从两个数组中分别组成成对的元素,然后简单地使用sort函数。要注意的重要一点是,对中的第一个元素应来自要执行排序的数组。
// Sort an array according to
// other using pair in STL.
#include
using namespace std;
// Function to sort character array b[]
// according to the order defined by a[]
void pairsort(int a[], char b[], int n)
{
pair pairt[n];
// Storing the respective array
// elements in pairs.
for (int i = 0; i < n; i++)
{
pairt[i].first = a[i];
pairt[i].second = b[i];
}
// Sorting the pair array.
sort(pairt, pairt + n);
// Modifying original arrays
for (int i = 0; i < n; i++)
{
a[i] = pairt[i].first;
b[i] = pairt[i].second;
}
}
// Driver function
int main()
{
int a[] = {2, 1, 5, 4, 9, 3, 6, 7, 10, 8};
char b[] = {'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'J'};
int n = sizeof(a) / sizeof(a[0]);
// Function calling
pairsort(a, b, n);
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
for (int i = 0; i < n; i++)
cout << b[i] << " ";
return 0;
}
输出:
1 2 3 4 5 6 7 8 9 10
B A F D C G H J E I