折半查詢又稱二分查詢,適用有序的順序表。(附:筆試考察查詢,這個是經典查詢法)
基本思路:首先給定值key與表中中間位置元素的關鍵字,若相等則查詢成功,返回位置。若不等,則所需查詢的元素只能在中間元素外的前半部分或後半部分中。縮小範圍,遞迴查詢。
2.折半查詢的**
int binary_search(seqlist l, elemtype key)
return -1;
}
3.示意圖
4.平均查詢長度
asl(成功) = 1/n(1*1+2*2+......h*2(h-1))=(n+1)/n*log(n+1)-1=log(n+1)-1
以該例計算一下
asl(成功) = (1*1+2*2+3*3)/6 = 7/3 (1次成功的節點1個,2次成功的節點2個,3次成功的節點3個)
asl(不成功) = (3*1+4*6)/7 = 27/7 (3次不成功的節點1個,4次不成功的節點6個)
由**就可以看出,折半查詢只適合線性表,不適合鍊錶,且要求元素按關鍵字有序。
查詢之折半查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...
查詢演算法之折半查詢
binary search 折半查詢又稱二分查詢,要求資料序列呈線性結構,即先排序,在查詢。可以明顯的提高查詢速度,其流程如下 預設陣列為a 需查詢的值為x 首先設定3個變數low mid high,分別儲存陣列元素開始 中間和末尾元素的序號。接著進行以下判斷。1 如果陣列中序號為mid的值與需查詢...
查詢 折半查詢
折半查詢 int search keytype key,int n,keytype k return 1 查詢失敗,返回 1 在演算法中,n表示記錄的個數。key表示要查詢的關鍵字。key為關鍵字順序表,每個元素都是對應記錄的關鍵字。例如key 0 為第0個記錄的關鍵字。如果每條記錄的資訊與它的關鍵...