C/C++

Как сделать сортировку массива по убыванию, сохранив индексы на языке C

Есть массив C[8] {1, 2, 3, 4, 5, 6, 7, 8}

Сделать {8, 7, 6, 5, 4, 3, 2, 1} и вывести индексы 8, 7, 6, 5, 4, 3, 2, 1
Та́к вот как-нибудь:
#include <iostream>
using namespace std;
int main()
{
int a, i, j, k, n;
cout << "n » ";
cin >> n;
int **array = new int* [n];
for (i = 0; i < n; i++)
array[i] = new int [2];
cout << "» ";
for (i = 0; i < n; i++)
{
cin >> array[i][0];
array[i][1] = i;
}
for (i = 1; i < n; i++) for (j = n - 1; j >= i; j--)
{
k = j - 1;
if (array[k][0]< array[j][0])
{
a = array[k][0];
array[k][0]= array[j][0];
array[j][0] = a;
a = array[k][1];
array[k][1] = array[j][1];
array[j][1] = a;
}
}
for (i = 0; i < n; i++) cout << array[i][0]
<< " » " << array[i][1] << endl;
system("pause > nul");
return 0;
}
Это с одним динамическим массивом размера n×2 и безо всяких q-sort'ов, когда и пузырьковой сортировки вполне достаточно, а можно и с двумя массивами или с одним массивом структур, как предложил Jurijus - это дела не меняет, будет всё то же самое! Динамические и VLA-массивы тоже не обязательны, а то и вовсе не нужны, особенно если исходный массив сразу задавать нужной длины и инициировать его в са́мом начале вместе с параллельным ему массивом индексов. (•‿•)
CE
Cehun Eliyev
29 440
Лучший ответ
Завести массив индексов и в процессе сортировки исходного массива проделывать с ним те же манипуляции, что и с исходным.
Вариант - сделать массив структур с индексами.
Совершенно невнятный вопрос. Изучи терминологию. Например по
Кнут Д. Э. - Искусство программирования. Том 3. Сортировка и поиск
Rusya Omarov Я понял так. Есть массив элементов. Надо создать массив пар (элемент, индекс-в-массиве) и отсортировать этот массив по значению "элемент"
Rusya Omarov Для этого не обязательно читать Кнута.