Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】配列内の最大値・最小値・2番目に大きい値・2番目に小さい値を求める方法

Javaを使って、配列内の最大値最小値2番目に大きい値2番目に小さい値を求める方法を、2つのサンプルコードとともに解説します。

方法1:Arrays.sort() を使う方法

最もシンプルなのは、Arrays.sort() メソッドで配列を昇順にソートし、先頭と末尾の要素(およびその隣の要素)を参照する方法です。

サンプルコード

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        int arr[] = {55, 10, 8, 90, 43, 87, 95, 25, 50, 12};
        System.out.println("配列 = " + Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("ソート後の配列 = " + Arrays.toString(arr));
        System.out.println("最小値 = " + arr[0]);
        System.out.println("2番目に小さい値 = " + arr[1]);
        System.out.println("最大値 = " + arr[arr.length - 1]);
        System.out.println("2番目に大きい値 = " + arr[arr.length - 2]);
    }
}

実行結果

配列 = [55, 10, 8, 90, 43, 87, 95, 25, 50, 12]
ソート後の配列 = [8, 10, 12, 25, 43, 50, 55, 87, 90, 95]
最小値 = 8
2番目に小さい値 = 10
最大値 = 95
2番目に大きい値 = 90

ポイントは、ソート後に2番目に小さい値が arr[1]2番目に大きい値が arr[arr.length - 2] になる点です。インデックスを固定値(例:arr[9])で指定すると、配列のサイズが変わった際に誤動作や例外の原因になるため、arr.length を使って指定するのが安全です。

方法2:ソート処理を自前で実装する方法

次に、標準ライブラリに頼らず、二重ループで隣接要素を比較・交換しながら整列させる(選択ソートに近い手法)例を見てみましょう。アルゴリズムの仕組みを理解したい場合に有効です。

サンプルコード

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        int temp;
        int arr[] = {55, 10, 8, 90, 43, 87, 95, 25, 50, 12};
        System.out.println("配列 = " + Arrays.toString(arr));
        int count = arr.length;
        for (int i = 0; i < count; i++) {
            for (int j = i + 1; j < count; j++) {
                if (arr[i] > arr[j]) {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        System.out.println("最小値: " + arr[0]);
        System.out.println("最大値: " + arr[count - 1]);
        System.out.println("2番目に小さい値: " + arr[1]);
        System.out.println("2番目に大きい値: " + arr[count - 2]);
    }
}

実行結果

配列 = [55, 10, 8, 90, 43, 87, 95, 25, 50, 12]
最小値: 8
最大値: 95
2番目に小さい値: 10
2番目に大きい値: 90

まとめ

  • Arrays.sort() を使えば1行でソートでき、コードが簡潔になります。
  • 自前でソートを実装すれば、比較・交換のロジックを学べます。
  • ソート後は arr[0]=最小値、arr[1]=2番目に小さい値、arr[count-1]=最大値、arr[count-2]=2番目に大きい値として取得できます。
  • なお、配列内に重複した値が存在する場合や、ソート不要の O(n) の1パス処理で求めたい場合は、最大値・最小値を保持する変数を個別に更新する方式を検討するとよいでしょう。
  1. Pythonで配列内の最大の要素を見つける方法を解説

    この記事では、「配列の中から最大の要素を求める」という問題の解決方法について詳しく解説します。 問題の概要 問題文:与えられた配列に対して、その中で最も大きい要素を計算して求める必要があります。 ここではブルートフォース(総当たり)アプローチを使用します。これは、配列全体を先頭から順番に走査しながら各要素を比較し、その時点での最大値を更新していくというシンプルかつ確実な手法です。 実装例 以下に具体的なコードを示します。 # 最大値を求める関数 def largest(arr, n): # 最大要素の初期値として最初の要素を設定 max = arr[0] # 配列全体を

  2. Pythonで配列内の最大要素を見つける方法【初心者向け解説】

    本記事では、配列の中から最大の要素を見つけるための解法とアプローチについて詳しく解説します。 問題の概要 配列が入力として与えられたとき、その中から最も大きい要素を見つけ出すことが課題となります。 アプローチ この問題は「線形探索」と呼ばれるシンプルな手法で解決できます。手順は以下の通りです。 まず、変数 max を配列の最初の要素で初期化します。 次に、2番目の要素から配列の末尾まで順番に走査していきます。 走査中の各要素について、現在の max の値と比較します。 要素が max より大きければ、max の値をその要素で更新します。 そうでなければ、そのまま次の要素へ進みます。 この処