遍历和二分法求解二维数组中查找问题
来源:互联网 发布:五笔教材 知乎 编辑:程序博客网 时间:2024/05/18 02:26
/** * Created by cuboo on 2017/4/20. * 问题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */public class test { public static void main(String[] agrs){ int[][] a; a = new int[8][8]; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { a[i][j] = i+j; } } System.out.println(new test().binaryFind(5,a)); } /** * 二维数据暴力遍历查找 * @param target * @param array * @return */ public boolean allFind(int target, int [][] array) { for(int i = 0;i < array.length;i++){ for (int j = 0; j < array[i].length; j++) { if (target == array[i][j]){ return true; } } } return false; } /** * 二维数据二分法查找 * @param target * @param array * @return */ public boolean binaryFind(int target, int [][] array) { for(int i = 0;i < array.length;i++){ if (binaryQuery(array[i],target)){ return true; } } return false; } /** * 二分法查找 * @param target * @param array * @return */ public boolean binaryQuery(int[] array,int target){ int length = array.length; int low = 0; int high = length - 1,middle = 0; while (low <= high){ //判断奇数 int tem = low + high; if (tem%2 == 0){ middle = tem/2; }else { middle = tem/2 + 1; } if (target == array[middle]){ return true; } else if (target > array[middle]){ low = middle + 1; }else { high = middle - 1; } } return false; }}
0 0
- 遍历和二分法求解二维数组中查找问题
- 二维数组的二分法查找
- 二维数组中查找问题
- 二维数组, 二分法查找数组元素下标 快速查找数组最大值 数组作为实参的问题
- 数组中最大最小值的蛮力法和二分法求解
- 二维数组中的查找 之 二分法
- 二维数组中的查找 之 二分法
- 有序数组和二分法查找
- 二维数组查找问题
- 二维数组查找问题
- 二维数组查找问题
- 二维数组中查找
- 二维数组中查找
- 二维数组中查找
- 二维数组中查找
- 二维数组中查找
- 二维数组中查找
- java 程序题 二分法查找二维数组(Dichotomy)
- C++学习笔记(20161114 ) 根据指定目标时间获得时间戳(秒数)
- 沙盒防泄密
- oracle中lag()函数和lead()函数的用法
- HDU 2602
- android-获取网络时间、获取特定时区时间、时间同步的方法
- 遍历和二分法求解二维数组中查找问题
- 关于重定向的几个注意点
- 正则表达式总结归纳
- js中的__proto__和prototype
- 关于linker command failed with exit code 1 造成的失败问题的汇总
- WebView与JS的那些事:入门篇
- 网络通讯框架
- Spring系列之Spring常用注解总结
- AVC1和H264的区别及利用