二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
二分查詢的偽**:
binarysearch(max,min,des)
mid-<(max+min)/2
while(min
<=max)
mid=(min+max)/2
ifmid=des then
return
midelseif mid >des then
max=mid-1
else
min=mid+1
return
max
如果乙個陣列是有序且平均增長的,比如說我們在0-100這101個元素中間查詢5,我們自然會從陣列下標較小的開始查詢。
折半查詢的公式:
mid =low+high/2 = low + 1/2*(high-low)
也就是mid等於最低下標low加上最高下標high與low的差的一半。對這個公式進行改進可以改為:
mid = low + (key - a[low])/(a[high] - a[low])*(high - low)
二分查詢法及改進
二分查詢演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 在本篇文章中為了說明問題的方便,假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到...
順序查詢以及二分查詢
include include define list init size 100 define listincrement 10 define ok 1 define error 0 define overflow 2 define eq a,b a b define lt a,b a b def...
列表查詢以及二分查詢
一 列表查詢 1 列表查詢 從列表中查詢指定元素 2 順序查詢 從列表第乙個元素開始,順序進行搜尋,直到找到為止。返回找到的那個索引 3 二分查詢 從有序列表的候選區data 0 n 開始,通過對待查詢的值與候選區中間值的比較,可以使候選區減少一半。二分查詢 時間複雜度是o logn 二分查詢的前提...