//找一个数组中第一大的数和第二大的数
/**
* 思路:如果当前元素大于最大数 max,则让第二大数等于原来的最大数 max,
* 再把当前元素的值赋给 max。
* 如果当前的元素大于等于第二大数secondMax的值而小于最大数max的值,
* 则要把当前元素的值赋给 secondMax。
*/
public class MaxAndSecondMax {
//生成一个随机数组,长度与大小指定
public static int[] getArray(int size, int max) {
int[] array = new int[size];
for (int i = 0; i < array.length; i++) {
array[i] = (int) (Math.random() * max);
}
return array;
}
//循环遍历一个数组
public static void BLArray() {
int[] arrays = getArray(10, 100);
System.out.print("生成的数组为:[ ");
for (int x : arrays) {
System.out.print(x + "\t");
}
System.out.print("]");
getMax_SecondMax(arrays);
}
//获取数组的最大值和第二大的值
public static void getMax_SecondMax(int[] array) {
int max = 0;
int second_max = 0;
int max_num = 0;
int second_max_num = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
second_max = max;
max = array[i];
max_num = i;
second_max = i;
} else {
if (array[i] > second_max) {
second_max = array[i];
second_max_num = i;
}
}
}
System.out.println("\nMax:" + max + " 下标:" + max_num);
System.out.println("Second_Max:" + second_max + " 下标:" + second_max_num);
}
public static void main(String[] args) {
BLArray();
}
}