折半查找法如何在Excel函數中的運用
折半查找法如何在Excel函數中的運用
排序與查找不管是在Excel領域,還是其他領域,學會了這個技能,我們做起事情來更加方便快捷,省去不少時間,效率倍增。以下是學習啦小編為您帶來的關于折半查找法在Excel函數中的運用,希望對您有所幫助。
折半查找法在Excel函數中的運用
折半查找
又稱之為二分查找,它要求目標數組中的數據是有序排列的。優(yōu)點是比較次數少,查找速度快,平均性能好,適用于不經常變動而查找頻繁的有序列表。下面先來看看下面的流程圖。
為了便于大家理解,我作幾點說明:
?、賹⑿枰檎业闹蹬c中間值(也叫做中位值)進行對比;
?、诖笥谥形恢禃r,以中位作為邊界,繼續(xù)在其右側取新的中位值繼續(xù)對比;
③小于中位值時,以中位作為邊界,繼續(xù)在其左側取新的中位值繼續(xù)對比;
?、艿扔谥形恢禃r,依次判斷其右側數值是否繼續(xù)相等,直到不相等時返回最后一個相等的數值;
⑤當中位位置與邊界重疊時,中止對比,此時如果查找值大于中位值,則返回中位值;如果查找值小于中位值,則返回中位左側數值。如果左側數值不存在,返回#N/A。
流程圖大致的介紹就是如此,不知道我描述是不是清楚,這只是一個算法而已,不懂也不需要太過深入研究。當數據個數為偶數時,中位等于個數除以2;數據個數為奇數時,中位等于<個數+1>除以2
案例剖析
?、偃缦聢D所示,給出了一連串升序排列的數組,我們要找出33這個數。按照上面的介紹,我們知道中位值為24.
②第一次比較,因為33>24,所以鎖定第二次查找范圍在中位值的后面,而不是前面,前面的數字都比24小,不可能找得到33.
?、鄣诙伪容^,中位值變?yōu)榱?1,33>31,繼續(xù)找后面的。
?、芤来晤愅疲钡秸业綌底只蛘哒麄€數組被查找完畢,沒有找到則會返回#N/A
現在或許大家還在疑問為什么要是一個有序的序列才可以進行折半查找?下面這張圖,與之前的圖對比一下,你就知道了。
Excel中也有類似的函數,LOOKUP,我們要查找74,但是用LOOKUP函數計算出來的結果卻是49,下面就來分析一下。
①第一次比較74小于116,所以開始往前查找。
?、谥形恢底?yōu)?0.74大于50,向后查找。
?、?4又大于47,依舊向后。
?、茏詈笾皇O乱粋€49了,這就是函數的返回值。
猜你喜歡: