2015-06-21 51 views
0

如果我有一個數組A和一個數組B,是否有辦法使用qsort()對數組A進行排序,並且同時根據A的元素對B的所有元素進行排序?例如,如果A = {4,3,2,1}並且B = {1,2,3,4},那麼在排序之後他們是這樣的:使用qsort根據一個排序兩個數組?

A = {1,2,3, 4}和B = {4,3,2,1}

回答

1

假設問題不是duplicate,我想你想根據它在A中排序的順序對B進行排序。我假設A是在對它重新排序之前進行排序。如果這確實是一個有效的假設,你必須提供。

一個非常簡單的解決方案可能是確定A中的順序,如果i> j和A [i]> A [j],您可以選擇兩個下標i,j,您可以說其升序爲下降。

然後,用它來定義比較功能於B.

使用
int compare (const void * a, const void * b) 
{ 
    return (*(int*)a - *(int*)b); 
} 


qsort (B, sizeof(B)/sizeof(int), sizeof(int), compare);