二维数组中查找目标值

题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。 完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否包含该整数。

 package Problem3;
 2 
 3 public class Find {
 4 
 5     /*
 6      * 题目描述:二维数组中的查找
 7      * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。
 8      * 完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否包含该整数
 9      * 
10      */
11     public static boolean find(int arr[][],int keyNumber){
12         //从二维数组的右上角开始选取与keyNumber比较的整数
13         //column的变化:arr[0].length-1-->0;
14         //row的变化:0-->arr.length;
15         int column=arr[0].length-1;
16         int row=0;
17         while(column>=0&&row<arr.length){
18             if(arr[row][column]==keyNumber){
19                 return true;
20             }
21             else if(arr[row][column]>keyNumber){
22                 column--;
23             }
24             else {
25                 row++;
26             }
27         }
28         return false;
29         
30     }
31     //测试find函数
32     public static void main(String[] args) {
33         /*
34          * 1  2  8  9
35          * 2  4  9  12
36          * 4  7  10 13
37          * 6  8  11 15
38          */
39         int array[][]=new int[4][4];
40         array[0][0]=1;
41         array[0][1]=2;
42         array[0][2]=8;
43         array[0][3]=9;
44         array[1][0]=2;
45         array[1][1]=4;
46         array[1][2]=9;
47         array[1][3]=12;
48         array[2][0]=4;
49         array[2][1]=7;
50         array[2][2]=10;
51         array[2][3]=13;
52         array[3][0]=6;
53         array[3][1]=8;
54         array[3][2]=11;
55         array[3][3]=15;
56         System.out.println(find(array, 7));
57         System.out.println(find(array, 5));
58     }
59 
60 }
同理,比较关键字也可以从二维数组的左下角开始选择,则column和row的增减方式调换一下,但是不能选择左上角和右下角的元素作为与查找元素比较的关键字,因为无论比较结果怎样,都无法进一步缩小查找的范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值