折半查詢(二分查詢)

2022-08-01 05:36:10 字數 1132 閱讀 1170

折半查詢法是效率較高的一種查詢方法。假設已經按照從小到大的順序排列好的五個整數a0-a4,要查詢的數是

x,其基本思想是:設查詢資料的範圍下限為

l=1,

上限為l=5,

求中點m=(1+h)/2,用x

與中點元素

am比較,若

x=am,

即找到,停止查詢;否則,若

x>am,

替換下限

l=m+1,

到下半段繼續查詢;若

x即換上限

h=m-1,

到上半段繼續查詢,如此重複前面的過程直到找到或者

l>h

為止。如果

l>h,

說明沒有此數,列印找不到資訊,程式結束

//二分查詢必須是有順序的

#include

int binsearch(int *a,int n,int x);

int main(void);

printf("請輸入你要查詢的資料:

");

scanf("%d",&num);

result=binsearch(arr,10,num);

if(result==-1)

printf("沒找到這個資料

\n");

else

printf("在下標為

%d的位置找到這個數

num=%d\n",result,num);

return 0;

}

int binsearch(int *a,int n,int x)

return -1;

}

二分查詢(折半查詢)

二分查詢 折半查詢 從有序序列中找到給出的要查詢的數字。原理是 首先把乙個有序序列中間位置的值與要查詢的數比較,若相等則找到了有序序列中的此數 否則比較兩者的大小,若前者大,則把有序序列的中間位置以前的元素都去掉,餘下的元素組成乙個新的有序數列繼續上一步的操作,直到找到為止 若後者大,則把有序數列中...

折半查詢(二分查詢)

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

二分查詢(折半查詢)

時間限制 3000 ms 記憶體限制 65535 kb難度 3描述 在某一國度裡流行著一種遊戲。遊戲規則為 在一堆球中,每個球上都有乙個整數編號i 0 i 100000000 編號可重複,現在說乙個隨機整數k 0 k 100000100 判斷編號為k的球是否在這堆球中 存在為 yes 否則為 no ...