二分查找算法( 遞歸&&非遞歸)java

一、二分查找概念:

所謂二分查找就是在一個(gè)有序的數(shù)組中要查找一個(gè)元素(target)宽涌,首先將target與數(shù)組中間元素(mid)比較褐鸥,如果相等似芝,皆大歡喜那婉;如果target>mid,說明target位于中間元素之后(因?yàn)榇笄疤釘?shù)組是有序的)党瓮,即target在區(qū)間 [mid+1详炬,end];如果target<mid寞奸,target在區(qū)間[0呛谜,mid-1],不斷縮小查找范圍蝇闭,直到查找到target或查找完所有區(qū)間未找到為止呻率,舉例如下圖:


二分查找.jpg
二硬毕、二分查找算法易錯(cuò)點(diǎn)

一定要注意邊界條件呻引,否則看似簡(jiǎn)單的代碼很容易寫出一手死循環(huán)G诶骸?肯埂!想看看花式犯錯(cuò)集錦蚯窥?韭脊?請(qǐng)戳這位老哥的文章:https://segmentfault.com/a/1190000011283470

三童谒、二分查找算法java實(shí)現(xiàn)(遞歸、非遞歸)

終于要上代碼了:

// 遞歸
public static boolean binarySearch(int[]arr, int n, int start, int end) {
        if(end <start) return false; //遞歸結(jié)束條件
        int mid = start + (end-start)/2; //避免start,end很大時(shí)(start+end)/2溢出
        if(arr[mid]==n) return true;
        else if(n<arr[mid]) return bs(arr,n,start,mid-1);
        else  return bs(arr,n,mid+1,end);
    }
//迭代
public static boolean binarySearch(int[]arr,int n,int start,int end) {
    while(start<=end) {
        int mid = start + (end-start)/2;
        if(arr[mid]==n) return true;
        else if(arr[mid]>n) end = mid-1;
        else start = mid + 1;
    }
    return false;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沪羔,一起剝皮案震驚了整個(gè)濱河市饥伊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔫饰,老刑警劉巖琅豆,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異篓吁,居然都是意外死亡茫因,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門杖剪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冻押,“玉大人,你說我怎么就攤上這事盛嘿÷宄玻” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵次兆,是天一觀的道長(zhǎng)狼渊。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么狈邑? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任城须,我火速辦了婚禮,結(jié)果婚禮上米苹,老公的妹妹穿的比我還像新娘糕伐。我一直安慰自己,他們只是感情好蘸嘶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布良瞧。 她就那樣靜靜地躺著,像睡著了一般训唱。 火紅的嫁衣襯著肌膚如雪褥蚯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天况增,我揣著相機(jī)與錄音赞庶,去河邊找鬼。 笑死澳骤,一個(gè)胖子當(dāng)著我的面吹牛歧强,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播为肮,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼摊册,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了颊艳?” 一聲冷哼從身側(cè)響起茅特,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棋枕,沒想到半個(gè)月后白修,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戒悠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年熬荆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绸狐。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卤恳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寒矿,到底是詐尸還是另有隱情突琳,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布符相,位于F島的核電站拆融,受9級(jí)特大地震影響蠢琳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镜豹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一傲须、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趟脂,春花似錦泰讽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至硼一,卻和暖如春累澡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背般贼。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工愧哟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人具伍。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓翅雏,卻偏偏與公主長(zhǎng)得像圈驼,于是被迫代替她去往敵國(guó)和親人芽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353