二维数组中的查找

来源:互联网 发布:知行结合人物论据 编辑:程序博客网 时间:2024/05/16 17:22
/** * 在一个二维数组中, * 每一行都按照从左到右递增的顺序排序, * 每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数 * 判断数组中是否含有该整数。 */import java.util.Arrays;public class find {/** * 方法二:从左下角开始遍历,如果当前数比target小,则向右移动,如果当前数比target大,则向上移动 */public boolean Find1(int[][] array , int target){int n = array.length ; int m = array[0].length ; int i = n - 1 ; int j = 0 ;  boolean flag = false ; while(true){if(i < 0 || j >= m){break ; }if(array[i][j] > target){i-- ; }else if(array[i][j] < target){j++ ; }else{flag = true ; break ; }}return flag ;}/** * 方法一:直接遍历数组,然后通过二分查找看有没有这整数 */public boolean Find(int [][] array,int target) {for(int i = 0;i < array.length;i++){int pos =  Arrays.binarySearch(array[i], target) ; if(pos >= 0)return true ; }return false;    }public static void main(String[] args) {int[][] a = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}} ; System.out.println(new find().Find(a , 5));System.out.println(new find().Find1(a , 5));}}

0 0
原创粉丝点击