js 二分查詢的實現

2021-09-03 03:01:17 字數 940 閱讀 4456

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...