0
我寫了一個函數來執行wave-sort,如下所示。結果數組應該以比下一個更大的數字開始,但是我的代碼沒有這樣做。例如,如果輸入是:使用Javascript進行波形整理
[73, 80, 40, 86, 14, 96, 10, 56, 61, 84, 82, 36, 85]
...它給出的
[ 86, 96, 84, 85, 80, 82, 61, 73, 40, 56, 14, 36, 10 ]
代替的輸出開始比下一個更大的數,這是96
。
function waveSort(arr){
arr = arr.sort(function(a, b) {
return b - a;
});
for (var i = 1; i < arr.length; i += 2) {
if (arr[i-1] > arr[i]) {
var temp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = temp;
}
if (i+1 < arr.length && arr[i+1] > arr[i]) {
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
return arr;
}
爲什麼你認爲它應該從更大的價值開始?事實上,你在第一個「if」中測試,如果真的,則在較大的值之前交換較小的值。你期望什麼? – trincot
有沒有更好的解決方案波濤? – Hoslack