經典面試題22 - 二分查找

Binary Search

問題

針對有序的數(shù)組跨嘉,實現(xiàn)二分查找算法吃嘿。

例子:已知數(shù)組array: [2, 7, 8, 12, 34, 44, 56] ,和目標值 target, 求目標值在數(shù)組中的下標亮瓷,如果不存在返回-1降瞳。

解答

《編程珠璣》的作者Jon Bentley在其書中寫到:“90%的程序員寫的二分查找程序中都是有bug的嘱支, 雖然早在1946 年就有人將二分查找的方法公諸于世挣饥,但直到1962 年才有人寫出沒有bug 的二分查找程序∪臃悖”

關于二分查找的算法原理再次不做闡述,我們來看寫代碼時需要注意地方贞岭。

func binarySearch(array: [Int], target: Int) -> Int {
    var left = 0
    var right = array.count - 1
    
    while (left <= right) {
        //防止內存溢出, 追求效率也可以使用位運算
        let mid = left + (right - left) / 2
        let value = array[mid]
        
        //由于數(shù)組中不相等的情況更多搓侄,如果每次剛開始時就要判斷相等,將浪費不必要的時間讶踪。
        if (value < target) {
            left = mid + 1
        } else if (value > target) {
            right = mid - 1
        } else {
            return mid
        }
    }
    return -1
}

更多

經典面試100題 - 持續(xù)更新中

獲取更多內容請關注微信公眾號豆志昂揚:

  • 直接添加公眾號豆志昂揚
  • 微信掃描下圖二維碼柱查;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市研乒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雹熬,老刑警劉巖谣膳,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異继谚,居然都是意外死亡,警方通過查閱死者的電腦和手機花履,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門臭挽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咬腕,“玉大人欢峰,你說我怎么就攤上這事涨共。” “怎么了举反?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵火鼻,是天一觀的道長室囊。 經常有香客問我魁索,道長,這世上最難降的妖魔是什么粗蔚? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮致扯,結果婚禮上,老公的妹妹穿的比我還像新娘抖僵。我一直安慰自己,他們只是感情好裆针,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布世吨。 她就那樣靜靜地躺著澡刹,像睡著了一般耘婚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沐祷,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音胞锰,去河邊找鬼兢榨。 笑死嗅榕,一個胖子當著我的面吹牛吵聪,可吹牛的內容都是我干的。 我是一名探鬼主播吟逝,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼块攒,長吁一口氣:“原來是場噩夢啊……” “哼励稳!你這毒婦竟也來了囱井?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扶欣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后料祠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡髓绽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年顺呕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片株茶。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖启盛,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情僵闯,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布社裆,位于F島的核電站向图,受9級特大地震影響泳秀,放射性物質發(fā)生泄漏张漂。R本人自食惡果不足惜谨娜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趴梢。 院中可真熱鬧,春花似錦坞靶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簇抵。三九已至,卻和暖如春碟摆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背典蜕。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钢猛,地道東北人轩缤。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像典奉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卫玖,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • 今天想來說說二分查找,因為最近筆者的同學在面試時正好遇到了剪芥,而自己以前還真沒認真研究過琴许。 說起二分查找税肪,對算法和數(shù)...
    深度沉迷學習閱讀 1,061評論 0 0
  • 1 前言 二分查找本身是個簡單的算法榜田,但是正是因為其簡單,更容易寫錯箭券。甚至于在二分查找算法剛出現(xiàn)的時候,也是存在b...
    __七把刀__閱讀 1,383評論 0 1
  • 看完 TED的演講(你有拖延癥嗎?) 蛔六,覺得很有意思荆永。到大神的網站吧原文扒了下來(赤裸裸的抄襲)国章。 waitbut...
    CAICL閱讀 3,950評論 0 6
  • 百日共修第三天,由于昨晚的睡眠出現(xiàn)障礙導致今天早上捐了50塊錢捉腥,上午錄了一段音頻《中醫(yī)急癥處理》,命懸一線...
    王貞臻閱讀 148評論 2 2
  • 1 他叫星撬统,85年生人敦迄,雙魚座恋追,性別男罚屋,性取向男 2 我曾問過星,先天還是后天脾猛。他說應該是后天吧。在他很小時候猛拴,一...
    薇妙閱讀 591評論 0 1