import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }
        scanner.close();
        
        int max = arr[0];
        int min = arr[0];
        int comparisons = 0;
        
        for (int i = 1; i < n; i += 2) {
            comparisons++;
            if (arr[i] > arr[i - 1]) {
                comparisons++;
                if (arr[i] > max) {
                    max = arr[i];
                }
                comparisons++;
                if (arr[i - 1] < min) {
                    min = arr[i - 1];
                }
            } else {
                comparisons++;
                if (arr[i - 1] > max) {
                    max = arr[i - 1];
                }
                comparisons++;
                if (arr[i] < min) {
                    min = arr[i];
                }
            }
        }
        
        if (n % 2 != 0) {
            comparisons++;
            if (arr[n - 1] > max) {
                max = arr[n - 1];
            }
            comparisons++;
            if (arr[n - 1] < min) {
                min = arr[n - 1];
            }
        }
        
        System.out.println('Max: ' + max);
        System.out.println('Min: ' + min);
        System.out.println('Comparisons: ' + comparisons);
    }
}

运行示例: 输入: 8 5 3 9 1 7 2 6 4 输出: Max: 9 Min: 1 Comparisons: 11

Java 算法:使用迭代法在 n 个元素集合中找出最大值和最小值 (3n/2-2 比较次数)

原文地址: https://www.cveoy.top/t/topic/hOg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录