java-查詢數組倒數第二大的數據

題目:查詢一個數組的倒數第二大的數,不得使用排序算法

本文使用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;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章