我使用下面的快速排序功能進行排序以降序任何給定陣列的索引:輸出陣列的降序
int sorting (const void * a, const void * b)
{
return (*(double*)a < *(double*)b);
}
int main(int argc, char *argv[]) {
int n;
double values[] = { 88.54, 56.65, 100.13, 2.091, 25.223 };
qsort(values, 5, sizeof(double), sorting);
for(n = 0 ; n < 5; n++) {
printf("%f ", values[n]);
}
return(0);
}
除了按降序輸出的值,我要輸出其對應的indices
。例如,對於給定的values[]
數組,我會得到[2,0,1,4,3],這表示索引2具有最大值,索引0具有第二大值,依此類推。我如何修改上面的代碼?
謝謝
我建議你閱讀更多關於[在'qsort'函數](http://en.cppreference.com/w/c/algorithm/qsort),特別是關於比較函數應該返回的內容。 –
至於你的問題,你需要第二個數組與索引,你應該排序*索引*數組。然後,這是困難的部分,您需要找出一種方法將值數組傳遞給比較函數,該函數使用索引來檢查值數組中的值。 –
@Someprogrammerdude:如果使用指針數組而不是索引數組,這並不難。使用指針而不是索引常常簡化C編程任務,恕我直言。 – rici