JS二分查找算法詳解
更新時間:2017年11月01日 10:21:56 作者:模糊的星空
這篇文章主要為大家詳細介紹了JS二分查找算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
二分法查找,也稱折半查找,是一種在有序數(shù)組中查找特定元素的搜索算法。查找過程可以分為以下步驟:
(1)首先,從有序數(shù)組的中間的元素開始搜索,如果該元素正好是目標元素(即要查找的元素),則搜索過程結束,否則進行下一步。
(2)如果目標元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的那一半區(qū)域查找,然后重復第一步的操作。
(3)如果某一步數(shù)組為空,則表示找不到目標元素。
參考代碼:
// 非遞歸算法
function binary_search(arr, key) {
var low = 0,
high = arr.length - 1;
while(low <= high){
var mid = parseInt((high + low) / 2);
if(key == arr[mid]){
return mid;
}else if(key > arr[mid]){
low = mid + 1;
}else if(key < arr[mid]){
high = mid -1;
}else{
return -1;
}
}
};
var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86];
var result = binary_search(arr,10);
alert(result); // 9 返回目標元素的索引值
// 遞歸算法
function binary_search(arr,low, high, key) {
if (low > high){
return -1;
}
var mid = parseInt((high + low) / 2);
if(arr[mid] == key){
return mid;
}else if (arr[mid] > key){
high = mid - 1;
return binary_search(arr, low, high, key);
}else if (arr[mid] < key){
low = mid + 1;
return binary_search(arr, low, high, key);
}
};
var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86];
var result = binary_search(arr, 0, 13, 10);
alert(result); // 9 返回目標元素的索引值
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
超越Jquery_01_isPlainObject分析與重構
isPlainObject是Jquery1.4后提供的新方法,用于判斷對象是否是純粹的對象(通過 {} 或者 new Object 創(chuàng)建的)。2010-10-10
JS控件autocomplete 0.11演示及下載 1月5日已更新
JS控件autocomplete 0.11演示及下載 1月5日已更新...2007-01-01

