は私jsFiddleです:JavascriptプログラムのArray.sort()メソッドが不安定なのはなぜですか?ここで
//Change this variable to change the number of players sorted
var numberOfPlayers = 15;
var teams = [];
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(var a=0; a<numberOfPlayers; a++){
updateStandings();
teams.push(new Team(alphabet.charAt(a)));
}
console.log("Teams:");
for(var x=0; x<teams.length; x++){
console.log(teams[x].name);
}
//Functions and such
function updateStandings(){
teams.sort(function(a, b) {
if(a.score == b.score){
if(a.tiebreak == b.tiebreak){
return teams.indexOf(a)-teams.indexOf(b);
}else{
return b.tiebreak-a.tiebreak;
}
}else{
return b.score-a.score;
}
});
}
function Team(name){
this.name = name;
this.score = 0;
this.tiebreak = 0;
}
私はこの問題を想定しjavascriptのソートが不安定だったことだった、と私の比較機能を変更しましたが、それはまだ動作しません。
'tiebreak'は常に0なので、何もしません。私はあなたが 'tiebreak 'を全く必要としないと思う。インデックスの違いを返すだけです。 –
@PatrickEvansおそらく私は不明だった。私の問題は、ソートアルゴリズムが不安定で、安定させることができないということです。あなたはjsFiddleをテストしましたか? – QuestionCactus
@ torazaburoおそらく私は不明だった。私の問題は、ソートアルゴリズムが不安定で、安定させることができないということです。あなたはjsFiddleをテストしましたか? – QuestionCactus