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