理解js中使用二分法

2021-10-18 19:35:59 字數 990 閱讀 6920

首先說明乙個前提,再用二分法進行查詢時,查詢物件的陣列必須是有序的,當你拿到乙個陣列之後,你可以先進行排序,然後再利用二分查詢

首先舉乙個簡單的例子,讓你猜一下100以內的乙個正整數n,怎麼快速的guess出來呢,首先先猜是不是50?如果猜大了,就往小的方面去guess,可以猜25…,如果猜小了,可以往大了方向guess,可以猜75,就這樣一步一步的接近正確的答案

來看第乙個例子

while迴圈

function

indexof

(arr,target,start,end)

else

if(target < arr[mid]

)else

} console.

log(start,end)

;return-1

;}let a =[0

,1,2

,3,4

,5,6

,383

,565];

console.

log(

indexof

(a,5))

;//列印結果為5

第一步宣告開始的值和結束的值,分別是0和陣列長度-

1第二步

宣告中間值mid=(start+end)/

2並取整數

第三步用while迴圈

如果我們要找的這個target>arr[mid],那說明target只可能在mid+

1~end之間,

意思就是猜小了,要往大的方向猜

如果我們要找的這個target1之間,意思就猜大了,得往小的方向猜

如果我們要找的這個target==arr[mid]

,那恭喜你,猜對了

在用二分法進行查詢時,查詢物件的陣列必須是有序的,即各陣列元素的次序是按其值的大小順序儲存的。其基本思想是先確定待查資料的範圍(可用 [left,right] 區間表示),然後逐步縮小範圍直到找到或找不到該記錄為止。二分法可以用遞迴或者迴圈的方式實現。

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法的使用

在看二分查詢之前,需要先強調一下,陣列和函式等價,即f x 等價於num x 都是對映關係,根據乙個x值可以得到唯一乙個函式值。這裡的函式不僅指數學函式,也值自定義的表現為y f x 的函式。二分查詢通常用來處理函式值單調,且容易判斷的問題。例如在有序陣列中查詢值。無論什麼形式的二分,整體思想都是將...