国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

用遞歸查找有序二維數(shù)組的方法詳解

2019-11-26 16:03:38
字體:
供稿:網(wǎng)友
假設(shè)給定一個有序二維數(shù)組,每一行都是從左到右遞增,每一列都是從上到下遞增,如何完成一個函數(shù),輸入這樣一個二維數(shù)組和一個整數(shù),判斷這個整數(shù)是否在這個二維數(shù)組中。
假設(shè)一個4×4的有序二維數(shù)組:
          1          2          8          9
          2          4          9          12
          4          7          10        13
          6          8          11        15
要查找的數(shù)字為6。
算法的核心思想是,先取最左上角的數(shù)字9,因?yàn)?比6大,所以可以排除比9大的數(shù)字,也就是第四列,然后取8,同理排除第三列,再取2,比6小,可排除比2小的數(shù)字,也就是第一行,同理取4,排除第二行,取7,排除第二列,取4,排除第三行,取6,相等,返回true。
這里我們用遞歸實(shí)現(xiàn),代碼為:
復(fù)制代碼 代碼如下:

public class FindMatrixNumber {
 private static FindMatrixNumber instance;
 private static boolean found = false;
 public static FindMatrixNumber getInstance() {
  if (instance == null) {
   instance = new FindMatrixNumber();
  }
  return instance;
 }
 public static boolean find(int matrix[][], int number) {
  if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
   return false;
  } else {
   System.out.println("****Start finding****");
   findMatrixNumber(matrix, matrix.length, 0, matrix[0].length,
     number);
   System.out.println("*****End finding*****");
  }
  return found;
 }
 private static void findMatrixNumber(int matrix[][], int rows, int row,
   int columns, int number) {
  if (row > rows - 1)
   return;
  int cornerNumber = matrix[row][columns - 1];
  System.out.println(cornerNumber);
  if (cornerNumber == number) {
   found = true;
   return;
  } else if (cornerNumber < number) {
   findMatrixNumber(matrix, rows, ++row, columns, number);
  } else if (cornerNumber > number) {
   findMatrixNumber(matrix, rows, row, --columns, number);
  }
 }
}

測試代碼為:
復(fù)制代碼 代碼如下:

public class TestFindMatrixNumber {

 public static void main(String[] args) {
  int matrix[][] = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
  System.out.println(FindMatrixNumber.find(matrix, 6));
 }

}

測試代碼運(yùn)行結(jié)果為:
復(fù)制代碼 代碼如下:

****Start finding****
9
8
2
4
7
4
6
*****End finding*****
true

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 获嘉县| 灵川县| 股票| 晋州市| 宜宾县| 泗洪县| 临安市| 泸州市| 锡林郭勒盟| 曲阳县| 灵石县| 洪江市| 游戏| 上杭县| 武定县| 杭锦后旗| 开平市| 巴南区| 西乌| 鹤山市| 武隆县| 永康市| 凤阳县| 安庆市| 阿鲁科尔沁旗| 抚顺市| 安阳市| 嘉善县| 万宁市| 邮箱| 盱眙县| 乳源| 镇江市| 武邑县| 台湾省| 大姚县| 六安市| 廉江市| 黄梅县| 阿拉善盟| 大悟县|