//
第一题:给定一个数组,里面是一些数字,请只用一个for循环,找出其中第二大的数字。
所谓第二大的数字是:相当于这个数组逆序排序后,取下标为1的那个数字。
要求:只用1个for循环,配合if/else判断。不要对数组排序。
例如:对于数组 [2, 5, 1, 3, 2], 输出:3
//
大哥,看清楚题目。。。。你犯了三个大错误。1.题目没审清楚,2.需求也没审清楚,3.一楼的代码有错误(13行开始arr少了下标)。
第二大的数字,已经定义了是逆序排序后的下标为1的数字。
还有要求,//不要对数组排序。
其实题目很简单就是求,数组下标为arr.length-2的数字。
代码如下
/*
第一题:给定一个数组,里面是一些数字,请只用一个for循环,找出其中第二大的数字。
所谓第二大的数字是:相当于这个数组逆序排序后,取下标为1的那个数字。
要求:只用1个for循环,配合if/else判断。不要对数组排序。
例如:对于数组 [2, 5, 1, 3, 2], 输出:3 。
需求:
1.定义求数组“第二大“的函数。
2.只用一个for循环,配合if/else判断。
3.不能对数组排序。
思路: 其实就是求arr.length-2的数字
1.定义数组arr
2.逆向遍历数组
3.判断下标是否等于arr.length-2.并输出结果。
*/
class Test6{
public static void main(String[] args){
int[] arr1 ={9,5,1,6,7,8,1}; //测试数组1
int[] arr2 ={2,5,1,3,2}; //测试数组2
Dierda(arr1); //结果:输出8
Dierda(arr2); //结果:输出3
}
public static void Dierda(int[] arr){
for(int i=arr.length-1;i >= 0 ;i--){ //逆向遍历数组
if(i == arr.length-2){ //判断是否等于arr.length-2
System.out.println(arr); //输出第二大数字
break; //结束循环
}
else{
continue;
}
}
}
} |