js實現二分查詢演算法

2022-03-10 03:37:03 字數 1038 閱讀 4353

二分查詢:是一種搜尋某個值的索引的演算法。

基本條件:有序的陣列。

思路:1.將陣列折半,分成左右兩個陣列。

2.判斷要查詢的數和中間位置數值的大小,來判斷要查詢的數實在哪一半。

3.之後繼續折半查詢,直至找到這個數。

方法:二分查詢有兩種方法,一種是非遞迴方式,採用while方式,判斷是否符合要求。另一種是採用遞迴方式,採用if方式,依次遞迴,找到相應的值。

步驟一(非遞迴):

/**

* * @param  arr 已排好的陣列

* @param  key 想要查詢的值

*/

function

binary_search(arr, key)

else

if (key >arr[mid])

else

if (key else

}}

步驟二 (遞迴):

/**

* * @param  arr 已排好的陣列

* @param  low 第乙個值的索引

* @param  high 最後乙個值的索引

* @param  key 想要查詢的值

*/function binary_search(arr,low,high,key)

var mid = parseint((high + low) / 2);

if (arr[mid] == key)  else if (arr[mid] > key)  else if (arr[mid] < key) 

}

時間複雜度:總共有n個元素,漸漸跟下去就是n,n/2,n/4,....n/2^k,其中k就是迴圈的次數,由於你n/2^k取整後》=1,即令n/2^k=1,可得k=log2n,(是以2為底,n的對數)

o(log2n) => o(logn)

優點:比較次數少,查詢速度快,平均效能好。

缺點:要求待查表為有序表,且插入刪除困難。

結論:適用於不經常變動而查詢頻繁的有序列表。

js實現二分查詢

二分查詢,也稱為折半查詢,是指在有序的陣列裡找出指定的值,返回該值在陣列中的索引。查詢步驟如下 1 從有序陣列的最中間元素開始查詢,如果該元素正好是指定查詢的值,則查詢過程結束。否則進行下一步 2 如果指定要查詢的元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半區域查詢,然後重複第一步的...

js實現二分查詢

二分查詢需要陣列是有序的,1 先從有序陣列的最中間元素開始查詢,如果和要查詢的元素相等,直接返回索引,若不相等則下一步。2 如果指定的元素大於或者小於中間元素,則在大於或小於的那一半區域內查詢,重複第一步直到找到目標元素。不使用遞迴 1 function search arr,key else if...

二分查詢演算法實現

include include using namespace std define n 20 int binary chop int a,int n,int j,int k 找到即返回下標 else if a mid k high mid 1 尋找的值小於中間值,則在左邊一般查詢 else low...