如果我有一个数组A和一个数组B,有没有办法使用qsort()对数组A进行排序,同时根据A的元素对B的所有元素进行排序?例如,如果A = {4,3,2,1}并且B = {1,2,3,4},那么在排序后它们是这样的:
A = {1,2,3,4}和B = {4,3,2,1}
答案 0 :(得分:1)
假设问题不是duplicate,我想你想根据它在A中排序的顺序对B进行排序。我假设A在再次排序之前已经排序。如果这确实是一个有效的假设,你必须提供。
一个非常简单的解决方案可能是识别A中的顺序,如果i> j和A [i]> A [j],你可以说它的升序是下降的。
然后,使用它来定义要在B中使用的比较函数。
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
qsort (B, sizeof(B)/sizeof(int), sizeof(int), compare);