Qsort параллельные массивы с использованием указателей

Я пытаюсь сделать параллельный qsort в C ++. У меня числовой массив, который хорошо сортируется, и я хочу, чтобы параллельный двумерный массив символов двигался вверх или вниз с его номерами. Это то, что я до сих пор.

    int compare (const void * a, const void * b)
{
//this is for qsort
return ( *(int*)b - *(int*)a );
}

void sort_scores(char** myArray, int *votes)
{
qsort ((myArray, votes ), 5, sizeof(int), compare);
}

Я получаю сортировку по числам, но не могу переместить символы по одному за раз, я не могу заставить это работать. Буду признателен за любую оказанную помощь.

0

Решение

Вместо того, чтобы сортировать сами голоса, вы можете создать массив указателей на голоса (то есть массив указателей на каждый элемент votes массив) и сортировать указатели. (Не забудьте обновить функцию сравнения соответствующим образом! Теперь она будет получать аргументы, которые вы должны привести к int **).
После сортировки этого нового массива просто пройдитесь по нему и используйте разность указателей, чтобы получить индексы элементов в исходных массивах.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]