折半查詢:
數字:1,2,3,4,5,6,7,8,9,10
下標:0,1,2,3,4,5,6,7,8,9
(0+9)/2=4 low=5 5<9 輸出
(4+9)/2=6 low=7 7<9 輸出
(6+9)/2=7 low=7 8<9 輸出
(7+9)/2=8 low=9 9<9(錯誤) 不能輸出,所以程式改正時應加上=
當低位進行比較時,由於相等時已經進行比較一次則不可重複進行比較,所以,
當mid當mid>key時,將mid值往前挪一位進行比較
輸出結果時由於起始值給定為0,不在所查詢的範圍之內,輸出-1
後面值依次輸出下標,到9結束,查詢3次,後面兩次也為-1
#include
intbinsearch(
int*
arr,
intlen
,int
key)
elseif(
arr[mid]<
key)
//後半段查詢
折半查詢(除錯)
源程式錯誤 int binsearch int arr,int len,int key else if arr mid key 後半段查詢 else return 1 int main for int i 0 i 13 i return 0 除錯分析 0 9 2 4 5 9 mid 4 high 9...
查詢 折半查詢
折半查詢 int search keytype key,int n,keytype k return 1 查詢失敗,返回 1 在演算法中,n表示記錄的個數。key表示要查詢的關鍵字。key為關鍵字順序表,每個元素都是對應記錄的關鍵字。例如key 0 為第0個記錄的關鍵字。如果每條記錄的資訊與它的關鍵...
查詢之折半查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...