输出数组前三大的数值和下标
package Wanshang317;
public class 第二大数组下标 {
public static void main(String[] args) {
/*思路:如果当前元素大于最大数 max,
则让第二大数等于原来的最大数 max,
再把当前元素的值赋给 max。
如果当前的元素大于等于第二大数secMax的值而小于最大数max的值,
则要把当前元素的值赋给 secMax。*/
//依次类比,可以找到第三大数字及其下标
//需求:给定一个数组{1,2,30,4,5},打印出该数组前三大
int[] arr = {1,3,30,4,5};
int max = arr[0];
int secMax = 0;
int Index = 0;
int secIndex = 0;
int thMax =0;
int thIndex = 0;
for(int i=0;i<arr.length;i++){//遍历
if(arr[i]>max){ //找最大值
thMax = secMax;//将原来的第三大变为第二大
thIndex =secIndex;
secMax=max;//如果条件成立,原来的最大值变为第二大
secIndex = Index;
max = arr[i];
Index = i;//当找到最大值时,就把下标赋值
}else if(arr[i]>secMax){
secMax = arr[i];
secIndex = i;
}
else
{
thMax =arr[i];
thIndex =i;
}
}
System.out.println("数组中的最大值是:"+max+",它的下标是:"+Index);
System.out.println("数组中的第二大值是:"+secMax+",它的下标是:"+secIndex);
System.out.println("数组中的第三大值是:"+thMax+",它的下标是:"+thIndex);
}
}
输出结果是:
数组中的最大值是:30,它的下标是:2
数组中的第二大值是:5,它的下标是:4
数组中的第三大值是:1,它的下标是:0
进程已结束,退出代码 0