□文/尼萨·辛奇 译/肖涵予
多萝茜和朋友们默不作声地并肩走着。艳阳当空高照,让人感觉暑热难耐。这时候,一件古怪的事情出现了,一头独角兽和一只长颈鹿正护送着一匹不停打着喷嚏的斑马走出森林。
这匹斑马不能独自行走,它打着喷嚏,飞沫四溅,神情痛苦不堪。斑马的两个同伴扶着它在河滩上躺下,等它打完一连串喷嚏。
多萝茜跟她的朋友们好奇地看着,然后慢慢靠近了这几个动物。
多萝茜轻轻咳嗽了一声,问道:“上帝保佑!有什么需要我们帮忙吗?”
独角兽绝望地说:“要是能就好了!我叫艾伦,是这片绿色森林的医生。我们陪生病的斑马来这里已经好几天了,可是完全不知道该怎么办。几个小时前它好一点儿了,我们正准备带它回森林。可是就在刚才,它又开始打喷嚏了。我猜它可能是对住在绿色森林里的什么动物过敏。要是能找出它到底对哪个动物过敏,我就能给它配药。可是因为我们都住在一起,实在找不出是谁造成的。自从那匹木马出现以后,一切就越来越糟了,我每天都得加班加点地工作!我实在不知道该怎么办了。”
独角兽倾诉的时候,斑马打喷嚏的症状缓解了一点儿。它看起来筋疲力尽,眼睛也红红的。
稻草人十分同情斑马,为它感到难过。“我们一定要帮它做点儿什么。你们看呀,它难受极了。”稻草人叹了口气说道。
“其实我也想过让森林里的动物一个一个来河边跟斑马接触。”独角兽说,“可是这太费时间了。绿色森林里住着512个动物。另外,想要说服羊妈妈跟她的孩子分开几个小时来河边,实在是不容易。”
多萝茜开始思考起来。如果它们排顺序时不够走运,要找的那只动物被排在了最后面,那它们得让512个动物都来到河边。确实得费好长时间。一定要找到更好的办法才行。
突然,她想到了一个绝妙的数学方法。“如果你让一半的动物同时来河岸呢?”她激动地问独角兽。
“我没明白,这有什么用呢?”独角兽回答。
“你们这儿有512个动物,对吗?假设你把其中256个带到森林的另一端,然后把剩下的带到河边,再让斑马分别去跟两组动物接触。如果它在哪组开始打喷嚏了,就把那一组再分成128个跟128个。然后让斑马去验证,并且把让斑马打喷嚏的那组动物再分成两半,直到找出那一个真正让斑马过敏的动物。这样你就不用让羊妈妈和自己的孩子分开那么长时间了。”
“这不也很费时间吗?”独角兽怀疑地问道。它试着去理解多萝茜的逻辑,尾巴不停地左右甩动着。
斑马终于恢复了一点儿体力,也开始聚精会神地听多萝茜说话。现在,它终于有了一点儿开口说话的力气。“我觉得这个办法可行。”斑马说,“我明白你的意思,我们先把512个动物分成两组:256跟256。然后把让我打喷嚏的那组再分成128跟128两组,接着是64和64,32和32……”
“接下来是16和16,”独角兽眉头微皱,接着数道,“8和8,4和4,2和2,最后是1和1。”
“用这种方法,我们只需要试9次就能找出我到底对谁过敏。”斑马兴奋地说,“这真是个绝妙的主意!”
“可是我们还有一个问题。”独角兽说,“谁来负责动物分组呢?”
话音刚落,大家一齐看向了一直没说话的狮子。狮子安静地坐在地上,不停地左右晃动着尾巴。
当它注意到所有人都看着自己的时候,狮子说道:“什么?让我给它们分组?它们会听我的吗?每个人都害怕我!”
“当然是你。”独角兽淡定地说,“请你一定要帮我们。它们会听你的,不是因为你很可怕,而是因为它们尊重你。你是森林之王,看看你自己啊,你比我们都强壮。请你帮帮斑马吧!”
狮子第一次觉得十分自豪。它站了起来,像猫一样甩着尾巴。
它大声说道:“那就这么办吧,让我们一起找到让可怜的斑马生病的缘由。”
计划进展得很顺利,当动物看到狮子的时候,立刻排好队。在它的帮助下,绿色森林里的全部动物被归入两组。当斑马靠近第二组时,马上开始打喷嚏,于是他们又把第二组分成了两半,然后像这样,一步步按照计划推行。
不出几个钟头,他们就发现让斑马过敏的是一只小狐猴幼崽。森林医师独角兽立马开始配药:它把狐猴的毛、一小片椴树叶、几个蜗牛壳和一点儿椰汁倒入一只铁罐里,然后把铁罐放在火堆上,慢慢熬煮。
编程用语词典二分查找法
计算机会运用到多种查找算法,其中最有名的就是二分查找法,即故事中帮助斑马找到过敏原的查找方法。运用这种查找方法时,我们每一步都把所有数据一分为二,再进行查找,以节省时间。