演算法 二分檢索總結

2021-10-03 19:26:48 字數 1091 閱讀 7891

演算法正確性證明:

檢驗到引數的每類取值

檢驗演算法的每個分支

演算法所需空間:

對於含有n個內節點的二元樹,證明e=2n+1。其中e,i分別為外部和內部路徑長度。

當n=

1時,e=

2,i=

0,所以e

(n)=

i(n)

+2n成立;

不妨假設 ,

e(k)=i

(k)+

2k成立;

當n=k+

1時,不妨對二元樹中h級的葉子節點x(內節點)進行如下操作:

將內節點x從原樹中移除,此時形成一顆新的具有k個節點的二元樹,且e

(k)=

i(k)

+2k。

當重新新增x到二元數時,則e

(k+1)=

e(k)

-(h-1)

+2h,i

(k+1)=

i(k)

+(h-1)。

則e(k+1)

=i(k)+

2k-(h-1)

+2h =

i(k)

+(h-1)

+2k+2=

i(k+1)

+2(k+1

)。即e

(k+1)=

i(k+1)

+2(k+1

)

#include

using

namespace std;

int a[

10001];

//三分查詢

intthrsearch

(int l,

int r,

int x)

return-1

;}void

solve

(void)}

intmain()

cout <<

thrsearch(1

,5,4);}

演算法分析 二分檢索演算法

實現 實現方法 二分檢索演算法又稱為折半檢索演算法,屬於非常基礎簡單的演算法,其檢索基於比較,通過比較來檢索目標。有序表中元素是按公升序排列,將表中間位置記錄的關鍵字與檢索關鍵字比較,如果兩者相等,則檢索成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於檢索關鍵字,則進一...

檢索演算法之二分查詢

二分查詢演算法類似我們日常生活中常見的猜數字的遊戲。假設給定從1 100這個排好序的陣列,而猜數字的人只知道這個範圍,你拿著一塊寫有數字的題板背對著他,讓他猜你手裡拿的的數字。估計有經驗的人會先猜50,然後你說偏大了,偏小了,還是相等。如果偏大了或者是偏小了,他會用同樣的方式在偏大或者偏小的陣列中從...

二分檢索歸納

二分法搜尋並不是什麼很高深的演算法,任何時候需要編寫乙個這樣的演算法恐怕都不是難事,甚至c 標準庫里已經有相關數但是當現在的我看到二分法搜尋的 仁需要想一想是否確實是這樣寫的時候,我就知道我應該要寫一篇這樣的總結,把我對二法這個說難不難的問題梳理歸納一下,這樣即使以後忘記了也能夠比較完整地回憶起這方...