題目:查詢一個數組的倒數第二大的數,不得使用排序算法
本文使用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; } }