盛 安/ 文
信不信你從1~100中選一個(gè)數(shù)字,我七次就可以猜出它是什么?
大家有沒(méi)有興趣跟父母或者同學(xué)做一個(gè)游戲?讓他們?cè)?~100 這100 個(gè)數(shù)字中任選一個(gè)寫(xiě)在紙上,但不要說(shuō)出來(lái),然后你們來(lái)猜。每次猜完,他們要告訴你們猜的數(shù)字是大了還是小了,然后繼續(xù)猜,我保證七次之內(nèi)你們就可以猜到這個(gè)數(shù)字,你們信不信呢?
這看起來(lái)可能有點(diǎn)兒不可思議,畢竟有100 個(gè)數(shù)字呢,只猜七次,是不是太少了點(diǎn)兒?但實(shí)際上是可以做到的。
下面就讓我們來(lái)親自體驗(yàn)一下這個(gè)游戲。比如我選了一個(gè)數(shù)字83并且把它秘密寫(xiě)在了一張紙上,然后你就可以猜了。
第一次:一定要猜這100個(gè)數(shù)字最中間的那個(gè),所以有兩個(gè)候選者:50和51。我們可以任意選一個(gè),就選50吧。好,現(xiàn)在我告訴你,你猜的數(shù)字小了。
第二次:你要找出51~100 最中間的那個(gè)數(shù)字,依然有兩個(gè)候選者:75 和76。我們就選75吧。我告訴你,還是小了。
第三次:這次需要找出76~100 最中間的數(shù)字,那就是88 了。這時(shí)我會(huì)說(shuō),啊,大了。
第四次:你猜一下這次需要怎么選呢?對(duì),就是要找出76~87 最中間的那個(gè)數(shù),我們依然有兩個(gè)候選者:81 和82。我們選81 吧。這時(shí)候我說(shuō),哎呀,它又小了。
第五次:我相信你已經(jīng)知道了方法,就是找出82~87 最中間的數(shù)字,依然有兩個(gè)候選者:84跟85。我們選84好了。我說(shuō)這次又大了。
第六次:你肯定知道,這次是要在82 和83 之間選一個(gè)啊,我們選82 吧。我說(shuō),小了!
第七次:我相信你肯定猜出來(lái)了!因?yàn)?2 你猜過(guò),它小了,84 你也猜過(guò),它大了,所以還用想嗎?肯定是83??!
看,是不是七次我們就猜出來(lái)了?
那你們看懂這個(gè)方法了嗎?它就是不停地縮小范圍,然后找最中間的那個(gè)數(shù)字,而這種方法,叫作二分法查找。
二分法查找可以快速找出我們要找的那個(gè)數(shù)字,是計(jì)算機(jī)算法中應(yīng)用非常廣泛的一種方法,它只有一個(gè)要求:就是我們查找的這個(gè)東西,必須是已經(jīng)排列好的。就像1~100這100個(gè)數(shù)字,它們就是從小到大排列好的。
而且二分法查找不止可以查找連續(xù)的數(shù)字喲,只要查找的東西是已經(jīng)排列好的,哪怕數(shù)字不連續(xù),也一樣可以用二分法。
至于一個(gè)數(shù)列要幾次才能找到我們想要的數(shù)字,我們可以這么算:比如100 個(gè)數(shù)字的話,100÷2=50,這是一次。50÷2=25,這是第二次。25÷2=12.5,四舍五入為13,這是第三次。13÷2=6.5,四舍五入為7,這是第四次。7÷2=3.5,四舍五入為4,這是第五次。4÷2=2,這是第六次。2÷2=1,這是第七次。所以說(shuō)用這個(gè)數(shù)列的數(shù)的個(gè)數(shù)一直除以2,直到最后得到1或者比1小的數(shù),看看除了幾次,那就是需要的次數(shù)。
你學(xué)會(huì)了嗎?可以去跟爸爸媽媽或者同學(xué)玩了,一定會(huì)讓他們吃驚的!
小學(xué)生學(xué)習(xí)指導(dǎo)(爆笑校園)2020年5期