設n個不同的整數排好序後存於t[0:n-1]中. 若存在若干(>=0)個下標i,0<= i <=n-1, 使得t[i]=i. 設計乙個有效演算法找到這些個下標.
資料輸入: 第1行有乙個正整數n, n<=1000000, 表示有n個整數(保證在int內). 接下來一行是這n個整數.
結果輸出:t[i]=i的下標;若沒有則輸出no .注意輸出最後有個空格.
測試輸入
期待的輸出
時間限制
記憶體限制
額外程序
測試用例 1
以文字方式顯示
2↵0 1↵
以文字方式顯示
0 1 ↵
1秒64m
0
#include#include#includeusing namespace std;
const int n=1e6+5;
int n,a[n],b[n],s=0,flag=1;
void bs(int l,int r)
else if(a[mid]mid)
}}int main()
else printf("no \n");
}
找數字 遞迴,二分查詢
題目 在一從大到小排序的序列中用遞迴找乙個數在不在這序列,在輸出yes,不在輸出no 這題用了二分查詢的遞迴實現 思路 把陣列和變數都變成全域性變數方便遞迴函式修改 然後如果不可能就跳出迴圈 如果可能但現在沒找到就縮小範圍進入下乙個遞迴過程 如果找到了就輸出 includeusing namespa...
二分查詢(簡單版) 陣列下標表示
如果不是從一組隨機的序列裡查詢,而是從一組排好序的序列裡找出某個元素的位置,則可以有更快的演算法 例 11.4.折半查詢 include define len 8 int a len int binarysearch int number return 1 int main void 由於這個序列已...
二分法找數字
二分法找數字 首先我們應該了解什麼是二分法,二分法是指對於區間 a,b 上連續不斷且f f 0的函式y f,通過不斷地把函式f的零點所在的區間一分為二,使區間的兩個端點逐步逼近所求值,進而找到所求值。要完成這個操作,系統再找到之前都要不斷查詢,我們並不知道要迴圈的次數,所以我選擇用while迴圈,最...