折半查詢(除錯)

2021-08-18 00:12:24 字數 734 閱讀 8752

折半查詢:

數字: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個記錄的關鍵字。如果每條記錄的資訊與它的關鍵...

查詢之折半查詢

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