配列の中の最大値と最小値を求める
2020-08-28
こんにちは、0371です。
今回は、配列の中の最大値と最小値を求める方法について書いていきます。
基本情報技術者試験のアルゴリズムの問題集から、擬似言語の問題を実際の言語でプログラミングしてみました。
コード
今回は、ArrayList
を使用して、最大値と最小値を求めます。
言語はJava
です。
main関数内の変数 listsize
と range
に好きな数値を当てはめてください。
Main.java
import java.util.ArrayList;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int listsize = 10; // ここに好きな数値をいれる
int range = 100; // ここに好きな数値をいれる
ArrayList<Integer> list = new ArrayList<>();
Random rand = new Random();
for(int i=0; i<listsize; i++)list.add(rand.nextInt(range));
System.out.println(list);
listMax(list);
listMin(list);
}
private static void listMax(ArrayList<Integer> list) {
int max = list.get(0);
for(int k = 0; k < list.size(); k++) {
if(max < list.get(k)) max = list.get(k);
}
System.out.println("配列の最大値は" +max+ "です。");
}
private static void listMin(ArrayList<Integer> list) {
int min = list.get(0);
for(int k = 0; k < list.size(); k++) {
if(min > list.get(k)) min = list.get(k);
}
System.out.println("配列の最小値は" +min+ "です。");
}
}
Random()
とnextInt();
を使用することによって、実行するたびにランダムなint型の数値を配列の中身へ代入しています。
これよりもスマートな書き方はあると思います。
ラムダ式を使えば改善できそう。
何度か実行した結果は以下の通りです。
[93, 62, 59, 43, 63, 61, 60, 1, 79, 60]
配列の最大値は93です。
配列の最小値は1です。
[16, 46, 66, 54, 87, 30, 40, 35, 79, 56]
配列の最大値は87です。
配列の最小値は16です。
[14, 20, 11, 45, 53, 82, 14, 31, 91, 85]
配列の最大値は91です。
配列の最小値は11です。
今日の一言
アルゴリズム自体は簡単だけど、ArrayList
の使い方を忘れていて時間がかかった。