資料結構 靜態查詢之二分查詢

2021-07-05 22:01:35 字數 731 閱讀 2692

【二分查詢】

查詢(binary search),也叫折半查詢,是一種靜態表查詢方法。

【思想】

用給定值與處在表的中間位置的資料元素的鍵值進行比較,確定給定值的所在區間,然後逐步縮小查詢區間。重複以上過程知道找到或確認找不到該資料元素為止。

【asl】

aslb=

∑pici

=(n+1)log2(n+1)/n  -1

≈log2(n+1) -1

【時間複雜度】

時間複雜度為o(log2n)

【優缺點】

(1)優點:時間效能相對於順序查詢要好,效率較高

(2)缺點:侷限性大,只適用於順序儲存結構,即要求儲存結構是順序表或者順序表中元素按鍵值的次序排列

【演算法描述】

int searchbin(sqtalbe t,keytype key)

/*在有序表t中,用二分查詢法查詢鍵值等於key的元素,變數low,high分別標記查詢區間的下界和上界*/

{int low,high;

low=1;high=t.n; //設定查詢區間的初始值

while(low<=high) //當區間長度不為0時進行查詢

{mid=(low+high)/2; //對區間進行折半

if(key==t.elem[mid],key)

return mid;

else if(key靜態查詢之順序查詢

靜態查詢之分塊查詢

資料結構之二分查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成...

資料結構之二分查詢

上面我們介紹了順序查詢,但是它的時間複雜度為o n 讓人很受傷啊,所以有了二分查詢,二分查詢是乙個時間複雜度為o logn 的演算法,當然都是說的一般情況下,二分 二分,看名字就知道它的核心是什麼了,就是不斷地額逼近查詢值。include define max len 20 typedef stru...

資料結構之二分查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成...