Эффективная косвенная сортировка массива - PullRequest
0 голосов
/ 09 ноября 2018

Например, если массив хранится так

ex) вход

0 1 2 3 4 5 6 7 8 9
7 5 3 9 1 2 4 8 6 0

я хочу напечатать idx второго массива в порядке величины

ex) вывод

3 , 7 , 0 , 8 , 1 , 6 , 2 , 5 , 4 , 9 

Какой эффективный способ сделать это?

1 Ответ

0 голосов
/ 09 ноября 2018

Предположим, что ваши числа хранятся в массиве a:

int a[10] = {7, 5, 3, 9, 1, 2, 4, 8, 6, 0};

и вы хотите сохранить отсортированные индексы в массиве b, который изначально содержит все индексы в последовательном порядке:

int b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

тогда вы можете просто отсортировать массив индексов b на основе соответствующего значения в массиве a:

sort(b, b+10, [a](int i, int j){ return a[i] > a[j]; });

Полная демонстрация здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...