每天一道程式設計題1--查詢
阿新 • • 發佈:2018-12-07
1.題目
在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。
將每一列看作有序的序列進行折半查詢
package com.wx.day01; /** * 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序, * 每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數, * 判斷陣列中是否含有該整數。 */ public class Solution { public static void main(String[] args) { /* 1,2,3,4,5 2,3,4,5,6 3,4,5,5,7 4,5,6,7,8 5,6,7,8,9 */ int [][] array={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{4,5,6,7,8},{5,6,7,8,9}}; int target=9; System.out.println(Solution.Find(target,array)); } public static boolean Find(int target, int [][] array) { //折半查詢 for(int i=0;i<array.length;i++) { int low=0; int hight=array.length-1; while(low<=hight) { int mid=(low+hight)/2; if (array[i][mid]>target) { hight=mid-1; } else if (array[i][mid]<target) { low=mid+1; } else { return true; } } } return false; } }