時限:1000ms 記憶體限制:10000k 總時限:3000ms
描述給定乙個單調遞增的整數序列,問某個整數是否在序列中。
輸入第一行為乙個整數n,表示序列中整數的個數;第二行為n(n不超過10000)個整數;第三行為乙個整數m(m不超過50000),表示查詢的個數;接下來m行每行乙個整數k。
輸出每個查詢的輸出佔一行,如果k在序列中,輸出yes,否則輸出no。
輸入樣例
51 3 4 7 1133
69輸出樣例
yesno
no
#include #include int isin(int *array,int n,int m)
cin>>m;
for(int i=0; i>k;
if(binarysearch(a,n,k))
else
}return false;
}
分治演算法 二分查詢遞迴 非遞迴
二分查詢,在乙個有序的陣列中,查詢某個元素。比如 有序陣列array 1,3,4,5,7,9,10 查詢9。問題分析 將陣列分成左右兩個陣列,查詢mid值。如果mid值 9 從左邊陣列查詢,如果 9 從右邊查詢。分解過程 1 mid 0 6 2 3 查詢mid 3的值,是5。2 5 9,將陣列分成 ...
二分查詢遞迴演算法
使用此演算法的前提是,要查詢的範圍為有序範圍。一組數 num 9 left mid right 步驟 1.left為最左端元素的下標,right為最右端元素的下標,mid為查詢區間的中間元素,key為要查詢的元素。2.當left right的時候,比較num mid 和key 1 num mid k...
分治演算法 1 二分查詢
分 把問題劃分成子問題 治 遞迴的求解子問題 合 把子問題的解合併成問題的解 在電腦科學中,二分查詢又稱為折半搜尋,二分搜尋,是一種在有序陣列中查詢某一特定元素的演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或...