二分查詢 2

2021-10-24 22:34:13 字數 538 閱讀 2015

v1中使用while迴圈的方式,我們也可以不使用迴圈,使用遞迴的方式來實現

public

static

intbinarysearch_v2

(int

array,

int value)

public

static

intmysearch

(int

array,

int start,

int end,

int value)

int midindex =

(end - start)/2

+ start;

if(array[midindex]

== value)

if(array[midindex]

< value)

else

}

遞迴演算法寫起來簡單,但是有兩個不足,乙個是呼叫介面的開銷,函式呼叫本身是有開銷的。

另乙個是堆疊記憶體比較小,遞迴呼叫層次深,容易引起堆疊溢位錯誤。

2 二分查詢(上)

二分模板有兩個,分別適用於不同的情況。演算法思路 假設目標值在閉區間 l,r 中,每次將區間長度縮小一半,當l r時,我們就找到了目標值。版本一 當我們將區間 l,r 劃分成 l,mid 和 mid 1,r 時,其更新操作時l mid 1或者 r mid 計算mid時不需要加1。版本二 當我們將區間...

2 二分查詢(下)

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。輸入...

二分查詢模板2

題目相關鏈結傳送門 1.2.我的ac includeusing namespace std int lower bound int a,int left,int right,int x 檢索陣列中大於等於給定數x的最小項,返回其下標 最後,left和right是重合著的 return left in...