私はbogosort関数を作りたいです。出力がfalse
のたびにbogo関数を呼び出すとします。私はdo {bogo function block} while(sorted===false)
ループで試してみましたが、一度だけループしました(arr
は空の配列に変更されました)。最終的な目的は関数f.e bogo([1,5,3,2])を呼び出すことであり、ソートされた配列(変数shuffled
)を出力する必要があります。javascriptのBogosort関数ループ
function bogo(arr) {
function shuffle(arr) {
var shuffled = [];
var rand;
while (arr.length !== 0) {
rand = Math.floor(Math.random() * arr.length)
shuffled.push(arr.splice(rand, 1)[0]);
}
return shuffled;
}
function sorted(shuffle) {
for (var i = 0; i < shuffle.length - 1; i++) {
if (shuffle[i] <= shuffle[i + 1]) {
continue;
} else {
return false;
}
}
return true
}
return sorted(shuffle(arr));
}
console.log(bogo([1, 2]));
あなた 'sorted'機能しません何か変更すると、配列はどのようにソートされますか?また、 'sorted'はtrueまたはfalseを返します。ソートされた配列ではありません。 –
sortedの目的はbooleanを出力することです。その仮定では、while関数は現在シャッフルされた変数をとり、それを表示する必要がありますが、それは私の理論だけです。 – Felnyr
あなたのコード中の唯一の 'while 'は' shuffle'です... 'sorted'が呼び出された時点で実行され終了しました –