最大値と最小値を求める


01.リストされた数字から最高価格と最低価格を求める
問題の定義

  • 複数の数が配列内にある場合、最大値と最小値を探します.

  • 並んだ何位かを探し出す.

  • 1回の複文で問題を解決する.

  • 例えば[10,55,23,2,79,101,16,82,30,45]
  • 解決する
    Mathのmin()、max()を使うとすぐに解けますが、一度も使わずに解けましょう.
    配列の最初の数値がmaxとminであると仮定し、配列の最後の数値を比較し、より大きいまたはより小さい数値が発生したときにmaxとminの値を変更します.
    その時の位置を変数に格納します.
    プログラミング
    package me.sungbin.chapter8.ch08_01;
    
    public class MinMaxProblem {
        public static void main(String[] args) {
    
            int[] arr = {10, 55, 23, 2, 79, 101, 16, 82, 30, 45};
    
            int min = arr[0];
            int max = arr[0];
    
            int minPos = 0;
            int maxPos = 0;
    
            for (int i = 0; i < arr.length; i++) {
                if (min > arr[i]) {
                    min = arr[i];
                    minPos = i;
                }
    
                if (max < arr[i]) {
                    max = arr[i];
                    maxPos = i;
                }
            }
    
            System.out.println("최소값: " + min + "이고, " + minPos + "번째 위치에 있습니다.");
            System.out.println("최대값: " + max + "이고, " + maxPos + "번째 위치에 있습니다.");
        }
    }
    
    時間分析の実行
    1回繰り返すと、希望する値が2つ見つかります.この場合,実行速度はリストされた数に比例するのでO(n)となる.
    ポスト
    簡単に答えてよかった.