1. 程式人生 > >java 基礎資料遍歷(2)----二維陣列查詢

java 基礎資料遍歷(2)----二維陣列查詢

題目要求:
一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
輸入描述:

array: 待查詢的二維陣列
target:查詢的數字

輸出描述:

查詢到返回true,查詢不到返回false。

解題思路:
1.確認使用for迴圈。
2.為避免重複輸出結果,當找到和target值相等的array[][]時,立即跳出迴圈,並在迴圈外判斷是否存在。
3.輸出結果。

實際操作:

    public static void main(String[] args) {
        int
[][] array={{1,2,3}, {2,3,4}, {3,4,5}}; boolean find=false ; Scanner scanner =new Scanner(System .in); System.out.println("請輸入數字:"); int target=scanner .nextInt();//確認target的值 for (int i = 0; i < array.length; i++) { for
(int j = 0; j < array[i].length; j++) { if (array[i][j]==target) { find=true;//返回true. i=array.length-1; j=array[i].length-1;//當target數值等於array[i][j]時,立即跳出迴圈。 } } }if (find) { System.out
.println("存在數字:"+target);//在迴圈外判斷target值是否存在,並輸出結果。 }else { System.out.println("不存在數字:"+target); } } }

實際結果
這裡寫圖片描述
這裡寫圖片描述
思路擴充套件:
若修改本題的二維陣列為:每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。且每個數字都不會重複出現。其他要求不改變。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

解題思路:
1.使用for迴圈
2.按陣列的規律,為減少迴圈次數,決定從陣列的左下角開始尋找與target的值相等的array[i][j]。
3.具體操作:先將target值與array[i][0]比較(i=array.length-1)。當target大於或等於array[i][0]時,開始向右比較target和陣列的值。反之,若target小於或等於array[i][0]時,進入迴圈(i–),直至發現target大於或等於array[i][0]。
4.輸出結果。

    public static void main(String[] args) {
        int[][] array={{1,2,3,4,5},
                       {6,7,8,9,10},
                       {11,12,13,14,15},
                       {16,17,18,19,20}};
        boolean find=false;
        int target =5;
        int loopNum =0;

        for (int i = array.length-1; i>-1; i--) {
            if (target>=array[i][0]) {
                for (int j = 0; j < array[i].length; j++) {
                    if (target==array[i][j]) {
                        find=true;
                        i=0;//跳出外迴圈
                        j=array[i].length-1;//跳出內迴圈
                        //找到數字後,立即跳出迴圈。
                    }
                    loopNum++;
                }
                i=0;//跳出外迴圈
            }else {
                loopNum++;
            }
        }if (find) {
            System.out.println(target+" "+loopNum);
        }else {
            System.out.println("sorry"+loopNum);
        }
    }

}

實際結果:這裡寫圖片描述