順位付けのアルゴリズム

1月 1, 2003 · Posted in アルゴリズム · Comment 

得点の順位を求める

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

方法

  • 複数の得点が入っている配列。名前を「得点」とする。
  • 配列「得点」と同じ要素数をもつ配列を用意。名前を「順位」とする。
  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位です。

完成。

レンジ(範囲)

1月 1, 2003 · Posted in アルゴリズム · Comment 

説明

最大値と最小値の差。

レンジを求める。

    //範囲(レンジ)
public static double getRange(int[] x){
    //最大値の算出
    int max = 0;
    int min = 0;
    for(int i = 1; i < x.length; i++){
        if(x[i] > x[max]){
            max = i;
        }
        if(x[i] < x[min]){
            min = i;
        }
    }
    //(最大値−最小値)の算出
    return x[max] - x[min];
}

素数判定

1月 1, 2003 · Posted in アルゴリズム · Comment 

説明

1以外の自然数において、1もしくはその数でしか割り切ることのできない数。

※自然数=正の整数。

素数判定

渡した値が素数ならtrueを、素数でないならfalseを返す。

public static boolean getPrimeNumber(int x){
    if(x <= 1){
        return false;
    }

    for(int i = 2; i < x; i++){
        if(x % i == 0){
            return false;
        }
    }

    return true;
}

« 前ページへ次ページへ »