配列の中の最大値と最小値を求める

2020-08-28

こんにちは、0371です。

今回は、配列の中の最大値と最小値を求める方法について書いていきます。
基本情報技術者試験のアルゴリズムの問題集から、擬似言語の問題を実際の言語でプログラミングしてみました。

コード

今回は、ArrayListを使用して、最大値と最小値を求めます。 言語はJavaです。

main関数内の変数 listsizerange に好きな数値を当てはめてください。

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の使い方を忘れていて時間がかかった。