所以我試圖寫這個函數的輸入參數數組將被採取和複製到另一個數組,但以排序的方式。例如:輸入參數3, 1, 9, 8
將複製到目標數組1, 3, 8, 9
中。排序一個數組到另一個 - C
這是我迄今爲止的,但它只複製每次最小的元素。我正在尋找一種方法來將每次通過時發現的最小值「列入黑名單」。
void sort_another_array(int *param, int *target, int size){
int i, j, lowest = param[0];
for(i = 0; i < size; i++){
for(j = 0; j < size; j++){
if(param[j] < lowest){
lowest = param[j]
}
}
target[i] = lowest;
}
}
當然我也已經發現了最低值的另一個數組但是這更多不必要的循環和檢查,並增加了本已可怕的N^2的複雜性。有沒有更簡單的方法來做到這一點?
我完全新的C,所以請不要將其限制爲邏輯語句的簡單編程概念,使用一些標誌變量等。
爲什麼不復制數組,然後用你選擇的算法對新數組進行就地排序:https://en.wikipedia.org/wiki/Sorting_algorithm#Comparison_of_algorithms? –
我曾考慮過這個問題,但後來我一直堅持原來的想法,想看看我是否可以開放它。這就像現在的癢,我希望看到一個解決方案,如果只是爲了我的理智的緣故。 –
看起來你正在嘗試實現[選擇排序](https://en.wikipedia.org/wiki/Selection_sort)。事實證明,選擇排序實際上更容易實現,就像該文章所示。 – kaylum