私は以下のようにwave-sortを実行する関数を書いています。結果として得られる配列は、次の配列よりも大きい数字で始まらなければなりませんが、私のコードはそうしていません。入力された場合、例えば:Wave sort in 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
wavesortの方がいいですか? – Hoslack