1001 二分查詢

2021-10-14 04:16:32 字數 1112 閱讀 6871

問題描述

給定乙個單調遞增的整數序列,問某個整數是否在序列中

輸入格式

第一行為乙個整數n,表示序列中整數的個數;第二行為n(n不超過10000)個整數;第三行為乙個整數m(m不超過50000),表示查詢的個數;接下來m行每行乙個整數k。

輸出格式

每個查詢的輸出佔一行,如果k在序列中,輸出yes,否則輸出no。

樣例輸入

5 //資料個數

1 3 4 7 11 //具體資料

3 //查詢個數36

9樣例輸出

yesno

no思考:先寫出二分法的核心**,設定low、high、mid,傳遞3個引數,陣列、個數、關鍵字。設定flage判斷是否找到,在主程式中直接呼叫。

該**存在一定問題,沒有達到預期效果,不能等資料輸入完成後一次性給出結果,而是輸入乙個資料,給出乙個結果。

注:測試資料時從小到大輸入資料。

具體**

# include

# define n 1000

void

two(

int a,

int n,

int key)

if(a[mid]

>key)

high=mid-1;

if(a[mid]

low=mid+1;

}if(a[mid]

==key)

flag=1;

if(flag==1)

printf

("ok\n");

else

printf

("no\n");

}int

main()

printf

("輸入查詢資料總數\n");

scanf

("%d"

,&c)

;printf

("輸入查詢資料\n");

for(i=

0;i)return0;

}

NOJ 1001 二分查詢

2016.10.28 題目描述 1001.二分查詢 時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 給定乙個單調遞增的整數序列,問某個整數是否在序列中。輸入 第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過500...

NOJ 1001 二分查詢

給定乙個單調遞增的整數序列,問某個整數是否在序列中。第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過50000 表示查詢的個數 接下來m行每行乙個整數k。每個查詢的輸出佔一行,如果k在序列中,輸出yes,否則輸出no。5 1 3 4 7 ...

演算法練習 NOJ 1001 二分查詢

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述給定乙個單調遞增的整數序列,問某個整數是否在序列中。輸入第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過50000 表示查詢的個數 接下來m行每行乙個整數k。輸出每個...