2015-06-21 2 views
0

Если у меня есть массив A и массив B, есть ли способ использовать qsort() для сортировки массива A и в то же время сортировать все элементы B в соответствии с элементами A? Например, если A = {4, 3, 2, 1} и B = {1, 2, 3, 4}, то после сортировки они выглядят так:Использовать qsort для сортировки двух массивов по одному?

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

ответ

1

Предполагая, что вопрос не duplicate, я думаю, вы хотите сортировать B в соответствии с порядком, в котором он сортируется в A. Я предполагаю, что A является сортировка перед повторной сортировкой. Вы должны указать, действительно ли это действительное предположение.

Очень простое решение может заключаться в том, чтобы идентифицировать порядок в A, вы можете просто выбрать два индекса i, j, если 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); 
Смежные вопросы