1.遞迴實現
function binarysearch(data, dest, start, end)
if(dest < data[m])else
return false;
}var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87];
binarysearch(arr,4);
//32.非遞迴實現
function binarysearch(data, dest)
if(dest > data[m])else
}return false;
}var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87];
binarysearch(arr,4);
//3
以上是乙個等比數列,n / 2^k = 1時,k就是查詢的次數。即k=log2n,所以時間複雜度為o(logn),這是一種非常高效率的演算法。
和上邊介紹的二分查詢思路一樣:
function binary_search(arr, key) else if (arr[mid] < key) else
}return -1;
}var arr = [5,13,19,21,21,37,56,64,75,80,88,92];
var result = binary_search(arr, 21);
console.log(result);
// 左開右閉式
function binarysearch(array, start, end, target) else
} return start
}console.log(binarysearch([1,2,22], 0, 3, 22))
js實現二分查詢
二分查詢,也稱為折半查詢,是指在有序的陣列裡找出指定的值,返回該值在陣列中的索引。查詢步驟如下 1 從有序陣列的最中間元素開始查詢,如果該元素正好是指定查詢的值,則查詢過程結束。否則進行下一步 2 如果指定要查詢的元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半區域查詢,然後重複第一步的...
js實現二分查詢
二分查詢需要陣列是有序的,1 先從有序陣列的最中間元素開始查詢,如果和要查詢的元素相等,直接返回索引,若不相等則下一步。2 如果指定的元素大於或者小於中間元素,則在大於或小於的那一半區域內查詢,重複第一步直到找到目標元素。不使用遞迴 1 function search arr,key else if...
原生js實現二分查詢
二分查詢需要陣列是有序的,1 先從有序陣列的最中間元素開始查詢,如果和要查詢的元素相等,直接返回索引,若不相等則下一步。2 如果指定的元素大於或者小於中間元素,則在大於或小於的那一半區域內查詢,重複第一步直到找到目標元素。不使用遞迴 function search arr,key else if a...