У меня есть проект создания программы планирования, и одна ее часть требует сортировки. Я знаю, как это сделать с обычной сортировкой пузырьков, но проект просит меня сделать это так ...C++ сортировка путем создания массива индексов
sort() - функция сортировки данных массива float [], создающая массив отсортированных индексов. Функция sort() не сортирует данные, а заполняет массив indx [] так, чтобы данные [indx [0]], данные [indx [1]], ..., data [indx [NUM_EVENTS - 1] ] - значения данных [] в порядке возрастания.
Этот код, который я имею здесь, сортирует данные, но не делает это так, как это должно быть сделано. Это должно быть так, потому что мы не используем объекты, и индексы разных массивов должны соответствовать. Я действительно не могу понять, что делать, чтобы сортировать по индексам. Любая помощь будет оценена.
void sort(float data[], int indx[], int len){
float temp;
//this for loop was just to declare the array of indices
//as it is passed in empty
for (int i = 0; i < len; i++){
indx[i] = i;
}
for (int i = 0; i < len - 1; i++){
for (int j = 0; j < len - 1; j++){
if (data[j] > data[j+1]){
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
Если данные не в порядке, вместо замены данных, поменяйте индексный массив. Для меня это довольно просто. Если вы проработали это с использованием карандаша и бумаги, вы должны увидеть, что делается концептуально. – PaulMcKenzie
Спасибо! Я не знаю, почему это так сильно задержало меня. Он работает сейчас. –
Примечание - сравнение должно быть | if (data [indx [j]]> данные [indx [j + 1]]) | , – rcgldr