姓名:呂彬? 學(xué)號:16130140354
【嵌牛導(dǎo)讀】 二分查找也屬于順序表查找范圍,二分查找也稱為折半查找。二分查找(有序)的時間復(fù)雜度為O(LogN)。
【嵌牛鼻子】從二分查找的定義我們可以看出,使用二分查找有兩個前提條件:1,待查找的列表必須有序。2,必須使用線性表的順序存儲結(jié)構(gòu)來存儲數(shù)據(jù)。
【嵌牛提問】 那么什么是二分查找呢?
【嵌牛正文】那么什么是二分查找呢?
二分查找的基本思想是, 在有序表中,取中間記錄作為比較對象,若給定值與中間記錄的關(guān)鍵字相等,則查找成功;若給定值小于中間記錄的關(guān)鍵字,則在中間記錄的左半?yún)^(qū)繼續(xù)查找;若給定值大于中間記錄的關(guān)鍵字,則在中間記錄的右半?yún)^(qū)繼續(xù)查找。不斷重復(fù)上述過程,直到找到為止。
方法分析:折半查找先以有序數(shù)列的中點位置為比較對象,比較會產(chǎn)生3種情況,一種是待查找值大于中點位置的數(shù),此時我們要把比較區(qū)間縮小為有序數(shù)列的后半部分;一種是待查找值小于中點位置的數(shù),此時我們要把比較區(qū)間縮小為有序數(shù)列的前半部分;一種是待查找值等于中點位置的數(shù),此時查找成功。這樣不斷比較,直到查找成功或者區(qū)間小于0,就停止查找!數(shù)據(jù)結(jié)構(gòu)設(shè)計:有序數(shù)列:用一個數(shù)組data[size]來存放。區(qū)間:區(qū)間用數(shù)組的兩個下標(biāo)表示。
用整型low,high下標(biāo)來表示區(qū)間的前端點,后端點。mid表示數(shù)組的中間位置下標(biāo)。如: 7 14 18 21 23 29 31 35 38? 52 ↑ low? ? ? ↑ mid? ? ? ? ? ↑ high? ? ? ? (mid=(low+high)/2)
主要代碼截圖如下: