1. 程式人生 > >JS演算法之⼆分查詢

JS演算法之⼆分查詢

二分查詢法主要是解決「在一堆有序的數中找出指定的數」這類問題,不管這些數是一維陣列還是 多維陣列,只要有序,就可以用二分查詢來優化。

二分查詢是一種「分治」思想的演算法,大概流程如下: 1.陣列中排在中間的數字 A,與要找的數字比較大小 2.因為陣列是有序的,所以: a) A 較大則說明要查詢的數字應該從前半部分查詢 b) A 較小 則說明應該從查詢數字的後半部分查詢 3.這樣不斷查詢縮小數量級(扔掉一半資料),直到找完陣列為止 題目:在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的 順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。

function Find(target, array) {
 let i = 0;
 let j = array[i].length - 1;
 while (i < array.length && j >= 0) {
 if (array[i][j] < target) {
 i++;
81
 } else if (array[i][j] > target) {
 j--;
 } else {
 return true;
 }
 }
 return false;
}
//測試⽤例
console.log(Find(10, [
 [1, 2, 3, 4],
 [
5, 9, 10, 11], [13, 20, 21, 23] ]) );