E簡單二分查詢

2021-07-13 10:22:38 字數 650 閱讀 5103

簡單二分查詢

面對二分查詢,主要是你的思路;

第一步:你得把陣列有序的排列,一般選擇從小到大。

第二步:把l,r,m確定下來。然後看看你得key

如果,key ==m,你運氣太好一下子就找到了;

如果,key如果,key>m,此時你考慮在你的右邊找。(從小到大排列為例)

第三步:迴圈著,就看你的結束條件了,當然了,l不能去了r的右邊吧!則(l< r)

int main ()

; int key =4; //需要找的關鍵字

int index = -1;//找到返回下標,負責返回-1,沒找到

int len = sizeof(s)/sizeof(s[0]);//測量陣列長度;區別strlen

int l= 0; //左結點

int r =len - 1;//右結點

int m = (l+r)/2;//中間值

int i = 0;

while(l <= r)

else if(s[i] < key)

else

i ++;

} printf("%d\n",index);

return 0;

}

把簡單問題消化掉!

CodeForces 551E 二分查詢

題目鏈結 題目大意 給乙個數量級為5 10 5的long long陣列,進行5 10 4次操作,操作分為兩種 1 令序號在 l,r 區間的數值增加x 2 找到陣列內等於y值的兩個數的最大距離 主要思想 分塊 二分查詢 每sqrt n 個數分一組 塊 include using namespace s...

二分貪心 E

題目 輸入n和c,n代表有n間屋子c代表有c頭牛,然後輸入n個數代表這n間房子的座標,牛不喜歡這個布局,一進去就會很暴躁,所以要把牛分的盡可能的遠求最近兩頭牛的最大距離。解題思路 建立乙個陣列存這些房子的座標,然後用sort將這些座標排序,然後令l 0,r a n mid l r 2,先用mid當作...

陣列 二分查詢 簡單

描述 給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。挑戰 如果陣列中的整數個數超過了2 32,你的演算法是否會出...