算法題之-二維數組元素查找

描述:

給定的一個二維數組,該二維數組從左往右從,上往下依次增大,給定一個元素值,求該元素值是否是在該數組中 。

解決辦法

先將待查找元素(設爲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,存在
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章