算法之二分法(入門)

編程界里溺森,二分是一個(gè)十分熱門、實(shí)用?的一個(gè)算法医窿,學(xué)好了二分姥卢,可以提高枚舉的效率渣聚,并且簡單易懂,超實(shí)用哦棺榔!有錯(cuò)誤的地方望大神指點(diǎn)(^_^)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 參考書籍:《信息學(xué)奧賽一本通(c++版)》

Q1什么是二分隘道?

二分,有一個(gè)別名:分治算法忘晤。顧名思義默辨,就是把問題分割成幾個(gè)較小的問題,從而達(dá)到二分的目的——減少時(shí)間壹置。

Q2二分的注意事項(xiàng)

(一)設(shè)定變量

二分的變量主要是由以下幾個(gè)組成的:

1:left(或簡稱L) //枚舉的左邊界

2:right(或簡稱R) //枚舉的右邊界

3:mid(或簡稱m)//指向左邊界和右邊界的中間

4:需要枚舉的數(shù)組(下面簡稱a數(shù)組)表谊,最好是升序的

(二)變量初值

1:left=1或需要枚舉的數(shù)組的最小下標(biāo)(通常是1或者0)

2:right=需要枚舉的數(shù)組的最大下標(biāo)(下面就有n表示)

3:mid是在枚舉的過程中賦值的,下面詳細(xì)講

Q3算法思路

1:使用一個(gè)while循環(huán)难咕,條件是在left<=right的情況下運(yùn)行

2:將mid賦為(left+right)/2

3:以mid為枚舉下標(biāo)余佃,判斷a[mid]是否達(dá)到條件

4:如果達(dá)到條件,將left賦值為mid+1;

5:如果沒有達(dá)到條件椭懊,則right賦值為mid-1;

Q4基本框架

這就是基本框架



好了氧猬,光說不練假把式坏瘩,所以,小編將給出一道題實(shí)踐一下:

? ? ? 一個(gè)小游戲:輸入兩個(gè)數(shù):n妄均,m(1\geq m,n\leq 60000)破讨,并輸入一個(gè)數(shù)組a,共m個(gè)元素,(保證為升序)烫沙,求n在數(shù)組a中在什么位置隙笆。(如果不包含n則輸出“NO!”不包含引號(hào))

樣例輸入:

3 6

1 3 6 7 8 9

樣例輸出:

2

分析題目:

? ? 首先,它是求一個(gè)元素在一個(gè)數(shù)組里是什么位置瘸爽,并且數(shù)組是一個(gè)升序铅忿,就可以使用二分法進(jìn)行搜索。如果用普通的搜索方法從a_{1} ~a_{m},效率就低很多柑潦。那么現(xiàn)在我們講一下如何將二分法運(yùn)用其中:

? ? 1渗鬼、基本變量left=1荧琼,right=m差牛。

? ? 2堰乔、判斷條件:如果a[mid]=n的情況下,那么輸出mid夹孔,退出析孽;如果a[mid]>n的情況下袜瞬,將右邊界縮小到mid-1(因?yàn)閍數(shù)組是一個(gè)升序的數(shù)組身堡,所以,如果a[mid]>n汞扎,則要將范圍縮小到left~mid-1擅这,故將right=mid-1,如果不能理解痹扇,就多讀幾遍吧~ 溯香。~);同理结笨,如果a[mid]<n的情況下湿镀,那就將left=mid+1。? 這樣以來算途,不斷地縮小范圍蚀腿,如果相等則輸出并退出扫外,是不是減少了時(shí)間復(fù)雜度呢筛谚?

? ? 3停忿、沒什么好說的,上代碼:

這就是代碼


運(yùn)行結(jié)果



? ? ? ?好了吮铭,講了那么多谓晌,是時(shí)候說再見了T_T癞揉,如果這篇文章對(duì)你有所幫助,求點(diǎn)贊柏肪,下面芥牌,小編由衷的告誡讀者,思路很重要9詹妗I壬獭!蔬芥!多刷刷題控汉,總是沒錯(cuò)的^_^,再見啦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乎婿,一起剝皮案震驚了整個(gè)濱河市街佑,隨后出現(xiàn)的幾起案子捍靠,更是在濱河造成了極大的恐慌榨婆,老刑警劉巖褒侧,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷供,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吊档,警方通過查閱死者的電腦和手機(jī)唾糯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門移怯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來这难,“玉大人,你說我怎么就攤上這事嵌溢√Q遥” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵秧骑,是天一觀的道長乎折。 經(jīng)常有香客問我,道長骂澄,這世上最難降的妖魔是什么惕虑? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮樱衷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沸移。我一直安慰自己侄榴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布蕊爵。 她就那樣靜靜地躺著桦山,像睡著了一般。 火紅的嫁衣襯著肌膚如雪会放。 梳的紋絲不亂的頭發(fā)上钉凌,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音矢沿,去河邊找鬼酸纲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛福青,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播媒役,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酣衷,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了穿仪?” 一聲冷哼從身側(cè)響起席爽,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤只锻,失蹤者是張志新(化名)和其女友劉穎紫谷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祖驱,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捺僻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年崇裁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拔稳。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡壳炎,死狀恐怖匿辩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铲球,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布稼病,位于F島的核電站然走,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芍瑞。R本人自食惡果不足惜褐墅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一洪己、第九天 我趴在偏房一處隱蔽的房頂上張望答捕。 院中可真熱鬧,春花似錦拱镐、人聲如沸齐莲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芒填。三九已至,卻和暖如春殿衰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背娱颊。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工箱硕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悟衩。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓座泳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挑势。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 問題: 假設(shè)有n個(gè)數(shù)已按照升序(這是關(guān)鍵S铡)放在一維數(shù)組a中饲漾,如何找到你想要的數(shù)呢? 思路介紹 二分法考传,顧名思義,...
    Longjune閱讀 2,028評(píng)論 0 0
  • 前言 二分查找算法作為一種常見的查找方法僚楞,將原本是線性時(shí)間提升到了對(duì)數(shù)時(shí)間范圍,大大縮短了搜索時(shí)間泉褐,具有很大的應(yīng)用...
    知止9528閱讀 823評(píng)論 0 0
  • 上一篇我們總結(jié)了鏈表題目的常見題型和套路膜赃,本章我們?cè)賮砜纯炊帧?shí)話實(shí)說跳座,二分的題目通常來說都比鏈表題目復(fù)雜一些,...
    suoga閱讀 1,241評(píng)論 0 0
  • 二分搜索有左閉右開和左閉右閉的兩種形式左閉右開時(shí)[left,right)禾蚕,left=0;right=len(num...
    清晨我上馬閱讀 105評(píng)論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月换淆,有人笑有人哭,有人歡樂有人憂愁产舞,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,535評(píng)論 28 53