题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
/* 二维数组中的查找 题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */ function Find(target, arr) { // 边界条件判断:二维数组是否为空、二维数组长度是否为0、一维数组是否为空一维数组列数是否为0 if (arr == null || arr.length == 0 || arr[0] == null || arr[0].length == 0) return false; // 获取矩阵二维数组的行数m 与 列数n var m=arr.length, n=arr[0].length; // 初始化一开始的元素位置,这里我们设置为矩阵最右上角的元素 var i=0,j=n-1; // 循环遍历整个二维数组:循环终止条件:当初始化元素行数大于或等于二维数组的行数以及列数小于0是终止循环 while(i<m && j>=0){ // 如果目标值小于右上角的数字,则列下标减一 if(target<arr[i][j]) {j--;} // 如果目标值大于右上角的数字,则行下标减一 else if(target>arr[i][j]){i++;} // 如果相等,直接返回true else return true; } // 循环结束后如果还没有找到目标时,返回false return false; } var arr =[ [1,4,7,11,15], [2,5,8,12,19], [3,6,9,16,22], [10,13,14,17,24], [18,21,23,26,30] ]; var result=Find(15,arr); document.write(result);