□文/尼薩·辛奇 譯/肖涵予
多蘿茜和朋友們默不作聲地并肩走著。艷陽當(dāng)空高照,讓人感覺暑熱難耐。這時(shí)候,一件古怪的事情出現(xiàn)了,一頭獨(dú)角獸和一只長頸鹿正護(hù)送著一匹不停打著噴嚏的斑馬走出森林。
這匹斑馬不能獨(dú)自行走,它打著噴嚏,飛沫四濺,神情痛苦不堪。斑馬的兩個(gè)同伴扶著它在河灘上躺下,等它打完一連串噴嚏。
多蘿茜跟她的朋友們好奇地看著,然后慢慢靠近了這幾個(gè)動(dòng)物。
多蘿茜輕輕咳嗽了一聲,問道:“上帝保佑!有什么需要我們幫忙嗎?”
獨(dú)角獸絕望地說:“要是能就好了!我叫艾倫,是這片綠色森林的醫(yī)生。我們陪生病的斑馬來這里已經(jīng)好幾天了,可是完全不知道該怎么辦。幾個(gè)小時(shí)前它好一點(diǎn)兒了,我們正準(zhǔn)備帶它回森林??墒蔷驮趧偛牛珠_始打噴嚏了。我猜它可能是對(duì)住在綠色森林里的什么動(dòng)物過敏。要是能找出它到底對(duì)哪個(gè)動(dòng)物過敏,我就能給它配藥??墒且?yàn)槲覀兌甲≡谝黄穑瑢?shí)在找不出是誰造成的。自從那匹木馬出現(xiàn)以后,一切就越來越糟了,我每天都得加班加點(diǎn)地工作!我實(shí)在不知道該怎么辦了?!?/p>
獨(dú)角獸傾訴的時(shí)候,斑馬打噴嚏的癥狀緩解了一點(diǎn)兒。它看起來筋疲力盡,眼睛也紅紅的。
稻草人十分同情斑馬,為它感到難過?!拔覀円欢ㄒ獛退鳇c(diǎn)兒什么。你們看呀,它難受極了?!钡静萑藝@了口氣說道。
“其實(shí)我也想過讓森林里的動(dòng)物一個(gè)一個(gè)來河邊跟斑馬接觸。”獨(dú)角獸說,“可是這太費(fèi)時(shí)間了。綠色森林里住著512個(gè)動(dòng)物。另外,想要說服羊媽媽跟她的孩子分開幾個(gè)小時(shí)來河邊,實(shí)在是不容易。”
多蘿茜開始思考起來。如果它們排順序時(shí)不夠走運(yùn),要找的那只動(dòng)物被排在了最后面,那它們得讓512個(gè)動(dòng)物都來到河邊。確實(shí)得費(fèi)好長時(shí)間。一定要找到更好的辦法才行。
突然,她想到了一個(gè)絕妙的數(shù)學(xué)方法?!叭绻阕屢话氲膭?dòng)物同時(shí)來河岸呢?”她激動(dòng)地問獨(dú)角獸。
“我沒明白,這有什么用呢?”獨(dú)角獸回答。
“你們這兒有512個(gè)動(dòng)物,對(duì)嗎?假設(shè)你把其中256個(gè)帶到森林的另一端,然后把剩下的帶到河邊,再讓斑馬分別去跟兩組動(dòng)物接觸。如果它在哪組開始打噴嚏了,就把那一組再分成128個(gè)跟128個(gè)。然后讓斑馬去驗(yàn)證,并且把讓斑馬打噴嚏的那組動(dòng)物再分成兩半,直到找出那一個(gè)真正讓斑馬過敏的動(dòng)物。這樣你就不用讓羊媽媽和自己的孩子分開那么長時(shí)間了?!?/p>
“這不也很費(fèi)時(shí)間嗎?”獨(dú)角獸懷疑地問道。它試著去理解多蘿茜的邏輯,尾巴不停地左右甩動(dòng)著。
斑馬終于恢復(fù)了一點(diǎn)兒體力,也開始聚精會(huì)神地聽多蘿茜說話。現(xiàn)在,它終于有了一點(diǎn)兒開口說話的力氣?!拔矣X得這個(gè)辦法可行?!卑唏R說,“我明白你的意思,我們先把512個(gè)動(dòng)物分成兩組:256跟256。然后把讓我打噴嚏的那組再分成128跟128兩組,接著是64和64,32和32……”
“接下來是16和16,”獨(dú)角獸眉頭微皺,接著數(shù)道,“8和8,4和4,2和2,最后是1和1。”
“用這種方法,我們只需要試9次就能找出我到底對(duì)誰過敏?!卑唏R興奮地說,“這真是個(gè)絕妙的主意!”
“可是我們還有一個(gè)問題?!豹?dú)角獸說,“誰來負(fù)責(zé)動(dòng)物分組呢?”
話音剛落,大家一齊看向了一直沒說話的獅子。獅子安靜地坐在地上,不停地左右晃動(dòng)著尾巴。
當(dāng)它注意到所有人都看著自己的時(shí)候,獅子說道:“什么?讓我給它們分組?它們會(huì)聽我的嗎?每個(gè)人都害怕我!”
“當(dāng)然是你?!豹?dú)角獸淡定地說,“請(qǐng)你一定要幫我們。它們會(huì)聽你的,不是因?yàn)槟愫芸膳拢且驗(yàn)樗鼈冏鹬啬?。你是森林之王,看看你自己啊,你比我們都?qiáng)壯。請(qǐng)你幫幫斑馬吧!”
獅子第一次覺得十分自豪。它站了起來,像貓一樣甩著尾巴。
它大聲說道:“那就這么辦吧,讓我們一起找到讓可憐的斑馬生病的緣由?!?/p>
計(jì)劃進(jìn)展得很順利,當(dāng)動(dòng)物看到獅子的時(shí)候,立刻排好隊(duì)。在它的幫助下,綠色森林里的全部動(dòng)物被歸入兩組。當(dāng)斑馬靠近第二組時(shí),馬上開始打噴嚏,于是他們又把第二組分成了兩半,然后像這樣,一步步按照計(jì)劃推行。
不出幾個(gè)鐘頭,他們就發(fā)現(xiàn)讓斑馬過敏的是一只小狐猴幼崽。森林醫(yī)師獨(dú)角獸立馬開始配藥:它把狐猴的毛、一小片椴樹葉、幾個(gè)蝸牛殼和一點(diǎn)兒椰汁倒入一只鐵罐里,然后把鐵罐放在火堆上,慢慢熬煮。
編程用語詞典二分查找法
計(jì)算機(jī)會(huì)運(yùn)用到多種查找算法,其中最有名的就是二分查找法,即故事中幫助斑馬找到過敏原的查找方法。運(yùn)用這種查找方法時(shí),我們每一步都把所有數(shù)據(jù)一分為二,再進(jìn)行查找,以節(jié)省時(shí)間。