配列内の最大値と最小値を見つける方法(2要素法による)

2 要素法を使用します。2 つの変数 MAX_VALUE と MIN_VALUE を保持します。MAX_VALUE は最大値としてマークされ、MIN_VALUE は最小値としてマークされます。毎回、隣接する 2 つの数値を比較し大きい方は max と比較し、小さい方は min と比較し、最大値は値と値は比較によって求められます最小値、このメソッドの比較回数は 1.5N 回です

サンプルコードは次のとおりです。

public class LookForTheMaximumAndMinimumValuesInTheArray {
    static int MAX_VALUE;
    static int MIN_VALUE;
    public static void GetMaxAndMinByArray(int arr[]) {
        MAX_VALUE = arr[0];
        MIN_VALUE = arr[0];
        int arrLength = arr.length;
        for (int i = 1; i < arrLength - 1; i += 2) {
            if (i + 1 > arrLength) {
                if (arr[i] > MAX_VALUE) MAX_VALUE = arr[i];
                if (arr[i] < MIN_VALUE) MIN_VALUE = arr[i];
            }
            //大的跟大的比 小的跟小的比~
            if (arr[i] > arr[i+1]) {
                if (arr[i] > MAX_VALUE) MAX_VALUE = arr[i];
                if (arr[i+1] < MIN_VALUE) MIN_VALUE = arr[i+1];
            }
            if (arr[i] < arr[i+1]) {
                if (arr[i+1] > MAX_VALUE) MAX_VALUE = arr[i+1];
                if (arr[i] < MIN_VALUE) MIN_VALUE = arr[i];
            }
        }

    }

    public static void main(String[] args) {
        int[] array = {520, 20, 100, 1, 3, 20, 52,1314,5200,1314};
        GetMaxAndMinByArray(array);
        System.out.println("当前数组中最大值为:" + MAX_VALUE);
        System.out.println("当前数组中最小值为:" + MIN_VALUE);
    }
}

操作の結果は次のとおりです。

 個人的な要約:

デバッグで読んでみるといいですよ~ 今でも問題分解法を使っている人がほとんどだと思います. この種の問題を2段階に分けて, 最初に最大値を見つけてから, 次に最小値を見つけます.を 2 回配列するため、効率は 2 要素の方法ほど良くありません。

おすすめ

転載: blog.csdn.net/lps12345666/article/details/130167264