這篇文章將為大家詳細(xì)講解有關(guān)JavaScript中二維數(shù)組的查找案例,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
目前累計(jì)服務(wù)客戶1000多家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。在一個(gè)二維數(shù)組中(每個(gè)一維數(shù)組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。
基本思路
二維數(shù)組是有序的,比如下面的數(shù)據(jù):
1 2 3 4 5 6 7 8 9
可以直接利用左下角數(shù)字開始查找:
大于:比較上移
小于:比較右移
代碼思路
將二維數(shù)組看作平面坐標(biāo)系
從左下角(0,arr.length-1)開始比較:
目標(biāo)值大于坐標(biāo)值---x坐標(biāo)+1
目標(biāo)值小于坐標(biāo)值---y坐標(biāo)-1
注意:
二維數(shù)組arri中
j代表x坐標(biāo)
i代表y坐標(biāo)
代碼
function Find(target, array) { let i = array.length - 1; // y坐標(biāo) let j = 0; // x坐標(biāo) return compare(target, array, i, j); } function compare(target, array, i, j) { if (array[i] === undefined || array[i][j] === undefined) { return false; } const temp = array[i][j]; if (target === temp) { return true; } else if (target > temp) { return compare(target, array, i, j+1); } else if (target < temp) { return compare(target, array, i-1, j); } }
拓展:二分查找
二分查找的條件是必須有序。
和線性表的中點(diǎn)值進(jìn)行比較,如果小就繼續(xù)在小的序列中查找,如此遞歸直到找到相同的值。
function binarySearch(data, arr, start, end) { if (start > end) { return -1; } var mid = Math.floor((end + start) / 2); if (data == arr[mid]) { return mid; } else if (data < arr[mid]) { return binarySearch(data, arr, start, mid - 1); } else { return binarySearch(data, arr, mid + 1, end); } }
關(guān)于JavaScript中二維數(shù)組的查找案例就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。