二维数组中的查找

题目描述

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

思路分析

查找的过程从二维数组的角上选取一个值判断,如右上角那个数,显然它是当前所在列的最小值,当前所在行的最大值,如果比它相等,那是最好的情况,如果比它大,那就说从的所在列下方寻找,可以排除那一行,依次类推,如果说比它小,那就排除那一列,从它的左边以此类推,直到找到或者不存在完成

码上有戏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Find {
public static boolean find(int arr[][],int target){
boolean found=false;
int rows=arr.length;
int columns=arr[0].length;
int row=0;
int column=columns-1;
while(row<rows&&column>=0){
if(arr[row][column]==target){
found=true;
break;
}
else if(arr[row][column]>target){
column--;
}
else
row++;
}
return found;
}
public static void main(String[] args) {
int[][] arr=new int[4][4];
arr[0]=new int[]{1,2,8,9};
arr[1]=new int[]{2,4,9,12};
arr[2]=new int[]{4,7,10,13};
arr[3]=new int[]{6,8,11,15};
boolean flag=Find.find(arr, 16);
System.out.println(flag);
}
}

热评文章