6-二维数组中的查找
Posted sun-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6-二维数组中的查找相关的知识,希望对你有一定的参考价值。
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:该二维数组中的某一个数,小于它的数一定在它的左边,大于它的数一定在它的下面。所以可以从右上角开始查找。
- 代码如下
3 /* 4 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, 5 每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 6 */ 7 public class Demo5 { 8 9 public static void main(String[] args) { 10 11 //定义一个二维数组 12 int[][] arr = new int[][]{{1, 4, 7, 11, 15}, 13 {2, 5, 8, 12, 19}, 14 {3, 6, 9, 16, 22}, 15 {10, 13, 14, 17, 24}, 16 {18, 21, 23, 26, 30}}; 17 printArray(arr); 18 19 boolean find = Find(20, arr); 20 System.out.println(find); 21 } 22 23 /** 24 * 判断数组中是否有指定的数 25 * @param target 目标数 26 * @param array 传入此方法的二维数组 27 * @return 28 */ 29 public static boolean Find(int target, int [][] array) { 30 if(array == null || array.length == 0 || array[0].length == 0){ 31 return false; 32 } 33 34 int row = array.length; 35 int col = array[0].length; 36 //找到二维数组右上角的坐标值 37 int r = 0; 38 int c = col-1; 39 40 while(r < row-1 && c >=0){ 41 if(target == array[r][c]){ 42 return true; 43 }else if(target > array[r][c]){ 44 r++; 45 }else{ 46 c--; 47 } 48 } 49 return false; 50 } 51 52 /** 53 * 打印二维数组 54 * @param arr 55 */ 56 public static void printArray(int[][] arr) { 57 for (int i = 0; i < arr.length; i++) { 58 for (int j = 0; j < arr[i].length; j++) { 59 System.out.print(arr[i][j]+" "); 60 } 61 System.out.println(); 62 } 63 } 64 65
以上是关于6-二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章