本文共 1317 字,大约阅读时间需要 4 分钟。
要求: 1. 不可以通过排序实现,不能修改数组中的数据顺序
2. 要考虑到最⼤的数字可能出现多次
思路:找出最大值,然后标记,再重新找另外的最大值,遇到标记contine本次循环 继续找
完整代码如下:
package task;/** * 找出数组中第二大的元素的下标 * 思路: 找出最大值,然后标记,再重新找另外的最大值,遇到标记contine本次循环 继续找 */public class BigData03 { public static void main(String[] args) { int[] arrays = {1, 2, 3, 4, 5, 9, 7, 8, 5, 0}; int i = getMax(arrays); //获得数组最大值的下标 getSecondMax(arrays, i); } /** * 找到最大的值 * * @param array */ public static int getMax(int[] array) { int maxNum = array[0]; int maxTag = 0; for (int i = 1; i < array.length; i++) { if (maxNum < array[i]) { maxTag = i; maxNum = array[i]; } } System.out.println("数组中的最大值为: " + maxNum + ",所载的下标是: " + maxTag); return maxTag; } /** * 找第二大的值 * * @param arrays * @param maxTag */ public static void getSecondMax(int[] arrays, int maxTag) { int secondMax = arrays[0]; int secondTag = 0; for (int i = 1; i < arrays.length; i++) { if (i == maxTag) continue; if (secondMax < arrays[i]) { secondTag = i; secondMax = arrays[i]; } } System.out.println("数组中第二大的值: " + secondMax + ",所在的下标是: " + secondTag); }}
转载地址:http://rpczb.baihongyu.com/