84 演算法 二分法查詢

2021-08-29 13:46:55 字數 1040 閱讀 2958

二分查詢的核心思想理解起來非常簡單,有點類似分治思想。即每次都通過跟區間中的中間元素對比,將待查詢的區間縮小為一半,直到找到要查詢的元素,或者區間被縮小為 0,時間複雜度為o(logn)。

二分查詢雖然效能比較優秀,但應用場景也比較有限:

1.底層必須依賴陣列,主要原因是二分查詢演算法需要按照下標隨機訪問元素。

2.還要求資料是有序的,如果資料沒有序,我們需要先排序。所以,如果我們針對的是一組靜態的資料,沒有頻繁地插入、刪除,我們可以進行一次排序,多次二分查詢。這樣排序的成本可被均攤,二分查詢的邊際成本就會比較低。但是,如果我們的資料集合有頻繁的插入和刪除操作,要想用二分查詢,要麼每次插入、刪除操作之後保證資料仍然有序,要麼在每次二分查詢之前都先進行排序。針對這種動態資料集合,無論哪種方法,維護有序的成本都是很高的。

public

class

binarysearch

;int target = arr[

newrandom()

.nextint

(arr.length)];

int index =

find

(arr, target)

; system.out.

println

(target +

" "+ index);}

/** * 在有序陣列arr中,查詢target

* 如果找到target,返回相應的索引index

* 如果沒有找到target,返回-1

*/private

static

intfind

(int

arr,

int target)

private

static

intfind

(int

arr,

int target,

int l,

int r)

else

if(target < arr[mid]

)else

}}

查詢演算法 二分法

二分查詢演算法的基本思想 一.首先確定該區間的中間元素位置 mid low high 2 mid代表區間內中間元素的位置 low代表區間內最左邊元素的位置 high代表區間內最右邊元素的位置 二.將待查key元素值與中間元素mid的值 array mid 比較,如果相等,則查詢成功,否則確定新的查詢...

演算法 二分法查詢

1 2 二分法實驗 31 設a 0 n 1 是乙個已排好序的陣列.4請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,5返回小於x的最大元素的位置i和大於x的最大元素位置j.6當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置.72 設有n個不同的整數排好序後存放於t 0 n 1 中,8若存在...

演算法 二分法查詢

免費 二分法查詢主要是為了快速查詢給定陣列內,期待值在陣列中的位置 下標 二分法查詢通過對整個陣列取中間值,判斷期待值所在的範圍並縮小範圍,每次查詢範圍折半,直到範圍的邊界重合,得出期待值的位置,如果找不到返回null 二分法有乙個先決條件是 陣列內元素必須是有序的 給定乙個包含1,3,5,7,8,...