Java 算法:使用迭代法在 n 个元素集合中找出最大值和最小值 (3n/2-2 比较次数)
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
原文地址: https://www.cveoy.top/t/topic/hOg 著作权归作者所有。请勿转载和采集!