NOJ 1001 二分查詢

2021-07-24 04:16:36 字數 827 閱讀 6777

2016.10.28

【題目描述】

1001.二分查詢

時限:1000ms 記憶體限制:10000k 總時限:3000ms

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

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

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

輸入樣例

5 1 3 4 7 11

3 3

6 9

輸出樣例

yes

no no

【解題思路】

二分查詢,條件是序列必須有序,然後設定左右邊界,每次比較中間值與目標值的大小,以確定左右邊界。時間複雜度o(logn)

【**實現】

#include 

void binary_search(int , int ,int );

int main(void)

return0;}

void binary_search(int a, int n, int key)

else

if (a[mid] < key)

l = mid + 1;

else

r = mid - 1;

}if (flag)

printf("yes\n");

else

printf("no\n");

}

【心得體會】

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。輸出每個...

NOJ1001 演算法實驗一 二分查詢

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