順位付けのアルゴリズム
得点の順位を求める
配列に得点が入っていて、その順位を求めるアルゴリズム。この方法、かっこよさげ。
方法
- 複数の得点が入っている配列。名前を「得点」とする。
- 配列「得点」と同じ要素数をもつ配列を用意。名前を「順位」とする。
- 配列「順位」の全ての要素に1を代入。
- 配列「得点」の最初の要素を元にして、他のすべての要素と順次比較する。
- 最初の要素より少ない数を保持している要素を見つけた場合、配列「順位」の同じ要素に1加算する。
- 最後の要素まで比較したら、配列の2番目の要素を元にして、他の全ての要素と順次比較する。
- 以下、終わるまで繰り返し。
あぁ、日本語ってむずかしい。
実現
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位です。
完成。
レンジ(範囲)
説明
最大値と最小値の差。
レンジを求める。
//範囲(レンジ)
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もしくはその数でしか割り切ることのできない数。
※自然数=正の整数。
素数判定
渡した値が素数なら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;
}

