使用qsort根据一个对两个数组进行排序?

时间:2015-06-21 15:08:46

标签: c arrays sorting quicksort qsort

如果我有一个数组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}

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);