teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

Comparatorの役目と配列の並び替え

2015/08/20 02:08

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,14 @@
1
1
  比較する際,1位の回数に差があった時点で順位の優劣が決まるはずです.
2
2
  このコードではforループを抜けないと値を返さないので,必ず3位の比較の値になってしまいます.
3
- なので,forループの中で上位から回数を比較して,**差が生じた時点で値を返す**仕組みにしなければいけません.
3
+ なので,forループの中で上位から回数を比較して,**差が生じた時点で値を返す**仕組みにしなければいけません.
4
+
5
+ あと前回の回答でまだComparatorの役目がわかっていないようですが,
6
+ 配列の並び替えの際に使う天秤のようなものです.
7
+ 詳しくはソートアルゴリズムを調べて貰いたいのですが,簡単に説明します.
8
+ ご質問のような「1位を比較して,同じものだけ2位以下を比較する」といった方法ではなく,
9
+ 単純に**Comparatorを使ってPlayer同士を比較して,どちらがより上位か**を判定しているに過ぎません.
10
+ そしてより上位と判定されたものを入れ替えなどにより配列の上位側に置いているだけのことなのです.
11
+ それを繰り返して,最終的に配列の中身が上位から順に並ぶようにしているのです.
12
+
13
+ 表示時に同立を同じ順位で表示したいのなら,表示の段階で勝ち数比較して同立かを判定すれば済みます.
14
+ 同じComparatorを使って0を返すなら,という条件にすれば楽かもしれません.