NOJ 1001 二分查詢

2021-08-28 21:51:43 字數 968 閱讀 6869

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

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

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

5

1 3 4 7 1133

69

yes

nono

#include

#include

using namespace std;

int n,x;

int a[

10000];

void

search()

else

if(x) r=mid-1;

else

l=mid+1;

}if(flag)

printf

("yes\n");

else

printf

("no\n");

}int main (

)return0;

}

首先二分查詢是 乙個while迴圈,基本思路很明顯,不斷比較中間的值和目標值的大小,然後縮小範圍直至區間左值大於等於右值。

典型二分問題,在判斷是否跳出迴圈的時候同時在左右兩端進行判斷,以保證邊界點無遺漏。典型二分問題,在判斷是否跳出迴圈的時候同時在左右兩端進行判斷,以保證邊界點無遺漏。

判斷的時候用乙個flag,在最後根據flag的值進行輸出。

在輸入測例數目之後,用while(m--)而不用存在陣列裡,bing!

使用printfscanf

NOJ 1001 二分查詢

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

演算法練習 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。輸出每個...