题目:查询一个数组的倒数第二大的数,不得使用排序算法
本文使用java实现并经过测试,个人拙见,不足之处还请指出,如果有更优的方式还请告知。
/** * 查询一个数组的倒数第二大值 * 不得使用排序算法 */ public class GetSecMaxR { public static void main(String[] args) { //特殊情况1 // int[] a = {2,2,2,2}; // int result = findR(a); //特殊情况2 // int[] a = {2,2,2,3}; // int result = findR(a); int[] a = {2,3,6,1}; int result = findR(a); System.out.println(result == 0?"无第二大值":result); } /** * 查询方法 * @param arrs 数组 * @return 倒数第二大的值 */ public static int findR(int[] arrs){ int max =arrs[0]; int secondMax = 0; for(int i = 1 ; i < arrs.length ; i++){ if(arrs[i] > max){ secondMax = max; max = arrs[i]; }else if(arrs[i] == max){ max = arrs[i]; }else{ if(arrs[i] > secondMax) secondMax = arrs[i]; } } return secondMax; } }