摘要:把準(zhǔn)備過程紀(jì)錄下來,共勉。線性查找二分查找二分查找英語,也稱折半查找英語對(duì)數(shù)查找英語,是一種在有序數(shù)組中查找某一特定元素的搜索算法。
寫在最前面
導(dǎo)師貪腐出逃美國(guó),兩年未歸,可憐了我。拿了小米和美團(tuán)的offer,要被延期,offer失效,工作重新找。把準(zhǔn)備過程紀(jì)錄下來,共勉。
線性查找public static int search(int[] data, int target) { for(int i = 0; i < data.length; i++){ if(data[i] == target){ return i; } } return -1; }二分查找
二分查找(英語:binary search),也稱折半查找(英語:half-interval search)、對(duì)數(shù)查找(英語:logarithmic search),是一種在有序數(shù)組中查找某一特定元素的搜索算法。 搜索過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結(jié)束;如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的 那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數(shù)組為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。 - from 維基百科
二分法首先考察中間元素a[mid],如果該值是我們要找的值,那好極了,直接找到了;如果不是的話,由于我們已經(jīng)知道數(shù)組是排好序的(二分法要求待查找的數(shù)組是有序的,本例假設(shè)是升序的,降序其實(shí)是一樣的),那就看目標(biāo)值target和a[mid]的關(guān)系是怎樣的:如果a[mid] > target則說明目標(biāo)值target如果存在的話一定在a[mid]的左側(cè),因?yàn)樽髠?cè)都比a[mid]?。蝗绻鸻[mid] < target則說明目標(biāo)值如果存在的話一定在a[mid]的右側(cè),因?yàn)橛覀?cè)都比a[mid]大。
遞歸法
public static int binarySearch1(int[] data, int low, int high, int target) { int mid = (low + high) / 2; if(low <= high){ if(target < data[mid]){ binarySearch1(data, low, mid - 1, target); }else if(target > data[mid]){ binarySearch1(data, mid + 1, high, target); }else{ return mid; } } return -1; }
迭代
public static int binarySearch2(int[] data, int low, int high, int target){ int mid = (low + high) / 2; while(low <= high){ if(target < data[mid]){ high = mid - 1; }else if(target > data[mid]){ low = mid + 1; }else{ return mid; } } return -1; }
本節(jié)參考 http://www.jianshu.com/p/b07c...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70151.html
摘要:線程有幾種狀態(tài)生命周期是怎樣的線程有五種狀態(tài)創(chuàng)建就緒運(yùn)行阻塞死亡。當(dāng)線程獲得到等待的資源資源或者引起阻塞的條件得到滿足時(shí)調(diào)用或,會(huì)從阻塞狀態(tài)進(jìn)入就緒狀態(tài)。使用,允許最多個(gè)線程同時(shí)訪問資源。 轉(zhuǎn)載請(qǐng)注明出處: 貼一貼我的后端開發(fā)面試題。 本文是面試回寢室后憑記憶羅列出來的問題,大概90%的問題都在這里面了,有幾個(gè)問題的實(shí)在是想不起來了= =,有些問題自我感覺回答的不好,所以我是查了資料...
摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過程,啟動(dòng)過程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發(fā)面試題總結(jié) 各大公司 Jav...
摘要:一基礎(chǔ)接口的意義百度規(guī)范擴(kuò)展回調(diào)抽象類的意義想不想通過一線互聯(lián)網(wǎng)公司面試文檔整理為電子書掘金簡(jiǎn)介谷歌求職記我花了八個(gè)月準(zhǔn)備谷歌面試掘金原文鏈接翻譯者 【面試寶典】從對(duì)象深入分析 Java 中實(shí)例變量和類變量的區(qū)別 - 掘金原創(chuàng)文章,轉(zhuǎn)載請(qǐng)務(wù)必保留原出處為:http://www.54tianzhisheng.cn/... , 歡迎訪問我的站點(diǎn),閱讀更多有深度的文章。 實(shí)例變量 和 類變量...
閱讀 2086·2023-04-25 19:03
閱讀 1238·2021-10-14 09:42
閱讀 3419·2021-09-22 15:16
閱讀 1003·2021-09-10 10:51
閱讀 1585·2021-09-06 15:00
閱讀 2412·2019-08-30 15:55
閱讀 492·2019-08-29 16:22
閱讀 901·2019-08-26 13:49