二维数组中的查找 Java实现

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目描述

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

测试用例:

array为:

{1, 2, 8, 9}

{2, 4, 9, 12}

{4, 7, 10, 13}

{6, 8, 11, 15}

target:1

思路:

先与第一行最后一列的数比较,target较大则继续比较下一行最后一列值,较小则列值减1与之比较,直到找到相等值或全部比较完结束循环,返回结果

代码:

import java.util.Scanner;

public class Test1 {

private static boolean Find(int target, int[][] array) {

int rowTotal = array.length;//获取数组行数

int columnTotal = array[0].length;//获取数组列数

/*

* 判断数组是否为空、行数和列数是否不为0,不满足直接false

*/

if(array != null && rowTotal > 0 && columnTotal > 0) {

int row = 0;

int column = columnTotal - 1;

while(row < rowTotal && column >= 0) {//确保正在判断的是该数组的合法元素

if(array[row][column] < target) {//若target大于该行最大的数,则行数加1

row++;

}else if(array[row][column] > target){//若target小于当前元素的值,则列数减1

column--;

}else {

return true;

}

}

}

return false;

}

public static void main(String[] args) {

int[][] array = {

{1, 2, 8, 9},

{2, 4, 9, 12},

{4, 7, 10, 13},

{6, 8, 11, 15}

};

Scanner scanner = new Scanner(System.in);

int target = scanner.nextInt();

System.out.println(Find(target, array));

}

}

相关文档
最新文档