编写一个java程序,随机产生10个1-20的整数,设计一个高效算法找其中的最大元素和最小元素,并统计元素之间的比较次数。调用该算法执行10次并求元素的平均比较次数。
时间: 2023-03-20 18:01:00 浏览: 108
下面是一个Java程序,可以随机生成10个1-20的整数,并使用高效的算法找出其中的最大和最小值,并统计元素之间的比较次数。
```java
import java.util.Random;
public class Main {
public static void main(String[] args) {
int count = 10;
int range = 20;
int sumComparisons = 0;
for (int i = 0; i < count; i++) {
int[] arr = generateRandomArray(count, range);
int[] comparisons = findMaxAndMin(arr);
sumComparisons += comparisons[0] + comparisons[1];
System.out.println("Array #" + (i+1) + ": " + toString(arr));
System.out.println("Max: " + comparisons[0] + ", Min: " + comparisons[1]);
System.out.println("Comparisons: " + (comparisons[0] + comparisons[1]) + "\n");
}
double avgComparisons = (double) sumComparisons / count;
System.out.println("Average comparisons: " + avgComparisons);
}
private static int[] generateRandomArray(int count, int range) {
Random rand = new Random();
int[] arr = new int[count];
for (int i = 0; i < count; i++) {
arr[i] = rand.nextInt(range) + 1;
}
return arr;
}
private static int[] findMaxAndMin(int[] arr) {
int comparisons = 0;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int i = 0; i < arr.length; i += 2) {
if (i == arr.length - 1) {
max = Math.max(max, arr[i]);
min = Math.min(min, arr[i]);
break;
}
int cmp1 = arr[i];
int cmp2 = arr[i + 1];
if (cmp1 > cmp2) {
max = Math.max(max, cmp1);
min = Math.min(min, cmp2);
} else {
max = Math.max(max, cmp2);
min = Math.min(min, cmp1);
}
comparisons += 3;
}
return new int[] {comparisons, max, min};
}
private static String toString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]);
if (i < arr.length - 1) {
sb.append(", ");
}
}
sb.append("]");
return sb.toString();
}
}
```
在上面的代码中,我们使用 `generateRandomArray` 方法来生成一个由 `count` 个随机整数组成的数组,每个整数的范围为 1 到 `range`。然后我们使用 `findMaxAndMin` 方法来找到该数组中的最大和最小值,该方法返回一个数组,其中包含比较次数、最大值和最小值。在主方法中,我们调用 `generateRandomArray` 方法来生成10个随机数组,并使用 `findMaxAndMin` 方法来找到每个数组的最大和最小值,统计比较次数并输出结果。最后,我们计算平均比较次数并输出。
如果
阅读全文