题目:在一个二维数组中,每一行都按照从左到右的顺序排序,每一列都按照从上到下的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
废话不多说,直接撸代码:
private static void findNumber(int[][] array, int number) { int row = 0; int column = array[0].length-1; while (row < array.length && column >= 0) { if (array[row][column] == number) { System.out.println(number); return; } else if (array[row][column] < number) { row++; } else if (array[row][column] > number) { column--; } } System.out.println("Not find"); }
思路:每一次以表格的右上角为比较数和要要查询的数字进行比较。如果相等则输出,结束。小于则减少当前行,大于则减少当前列:
用array[0][4] = 6和number 进行不叫,出现以下三种情况。
相等:输出结果即可 小于 大于
以此类推,当行数>总行数 列数小于零时还没有找到证明不存在该数字。