描述:
給定的一個二維數組,該二維數組從左往右從,上往下依次增大,給定一個元素值,求該元素值是否是在該數組中 。
解決辦法
先將待查找元素(設爲key)與數組最右上角元素(設爲a)對比:
- 若a>key,因數值大小從上往下遞增,故該元素往下一定不存在key值,故可以刪除該列。
- 若a <key,因數值大小從左往右遞增,故該元素往右一定不存在key值,故可以刪除該行。
重複進行即可判斷是否存在該元素。
圖解
二維數組如下所示
key=7
其過程如下 :
其實現代碼很簡單:如下所示
function Find(arr,rows,colmuns,key){
var found=false;
if(arr!=null && rows>0 && colmuns>0 )
{
var row=0;
var colmun=colmuns-1;
while(row<rows && colmun>0)
{
if(arr[row][colmun]==key)
return true;
else if(arr[row][colmun]>key)
{
colmun--;
}
else
row++;
}
return found;
}
return found;
}
var arr=[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]];
flag=Find(arr,4,4,7);
console.log(flag); //1,存在