這篇文章帶給大家的內容是關於JavaScript中二維陣列的查找(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組是否含有該整數。
基本想法
二維陣列是有順序的,例如下面的資料:
1 2 3 4 5 6 7 8 9
可以直接利用左下角數字開始尋找:
大於:比較上移
小於:比較右移
程式碼想法
將二維陣列看成平面座標系
從左下角(0,arr.length-1)開始比較:
目標值大於座標值---x座標1
目標值小於座標值- --y座標-1
注意:
二維數組arri中
#j代表x座標
i代表y座標
程式碼
function Find(target, array) { let i = array.length - 1; // y坐标 let j = 0; // x坐标 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); } }
拓展:二分查找
二分查找的條件是必須有順序。
和線性表的中點值進行比較,如果小就繼續在小的序列中查找,如此遞歸直到找到相同的值。
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); } }
以上是JavaScript中二維數組的查找(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!