最大値と最小値


最大値と最小値も基本的な集計処理です。今後、並び替え処理を行う際にも必ず必要になる考え方です。

今回は、配列の最大値や最小値を求めることにします。

1.最大値と最小値の比較


まず、最大値を求めることを考えます。

最大値を求めるためには、最初に比較結果を格納するための変数(例えばmax)を用意し、それに0番目の配列要素を代入しておきます。

そのmaxと他の要素を順番に比較していき、maxより大きい値だった場合にmaxへその値を代入していけばよいです。

maxにあらかじめ非常に小さい値(-9999など)を入れ、0番目の要素から比較していく方法もありますが、対象のデータ範囲が分かるはずがないので、実現的とは言えません。

最小値の場合は、最大値と逆に比較した値が小さい値だった場合に代入するだけです。

 

下記は「長さ10の1次元配列に格納された整数の最大値と最小値を求める」プログラムです。


最大値・最小値(C)

#include <stdio.h>
#define NUM 10
int main(void){
    int i, max, min;
    int a[] = {5,7,2,1,9,5,3,8,2,3};

    max = a[0];
    min = a[0];
    for(i=1; i<NUM; i++){
        if(a[i] > max){
            max = a[i];
        }
        if(a[i] < min){
            min = a[i];
        }        
    }

    printf("最大値:%d  ", max);
    printf("最小値:%d\n", min);
    return 0;
}

最大値・最小値(Java)


public class MaxMin{
    public static void main(String[] args){
        int max, min;
        int[] a = {5,7,2,1,9,5,3,8,2,3};

        max = a[0];
        min = a[0];
        for(int i=1; i<a.length; i++){
            if(a[i] > max){
                max = a[i];
            }
            if(a[i] < min){
                min = a[i];
            }
        }
        
        System.out.print("最大値:"+ max + "  ");
        System.out.println("最小値:"+ min);
    }
}


実行結果

最大値:9  最小値:1

 

0番目の配列要素は比較する必要がないので、カウンタ i の初期値は1になっています。

0から始めても、実行結果は同じになります。