@634

順位付けのアルゴリズム

Advertisement

得点の順位を求める

配列に得点が入っていて、その順位を求めるアルゴリズム。この方法、かっこよさげ。

方法

  • 複数の得点が入っている配列。名前を「得点」とする。
  • 配列「得点」と同じ要素数をもつ配列を用意。名前を「順位」とする。
  1. 配列「順位」の全ての要素に1を代入。
  2. 配列「得点」の最初の要素を元にして、他のすべての要素と順次比較する。
  3. 最初の要素より少ない数を保持している要素を見つけた場合、配列「順位」の同じ要素に1加算する。
  4. 最後の要素まで比較したら、配列の2番目の要素を元にして、他の全ての要素と順次比較する。
  5. 以下、終わるまで繰り返し。
あぁ、日本語ってむずかしい。

実現

public class Test{
    public static void main(String[] args){
        //配列「得点」と「順位」
        int[] mark = {50, 20, 100, 70, 30, 80};
        int[] rank = new int[mark.length];

        rank = Rank.getRank(mark);

        //表示
        for(int i = 0; i < rank.length; i++){
            System.out.println(mark[i] + "点は"
                               + rank[i] + "位です。");
        }
    }
}

class Rank{
    public static int[] getRank(int[] mark){
        //配列「順位」
        int[] rank = new int[mark.length];

        //配列「順位」を全て1で初期化
        for(int k = 0; k < rank.length; k++){
            rank[k] = 1;
        }

        //順位を求める
        for(int i = 0; i < mark.length; i++){
            for(int j = 0; j < mark.length; j++){
                if(mark[i] > mark[j]){
                    rank[j] += 1;
                }
            }
        }

        return rank;
    }
}
結果
50点は4位です。
20点は6位です。
100点は1位です。
70点は3位です。
30点は5位です。
80点は2位です。
完成。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール