急求C++折半查找的基本思想和步驟<詳細(xì)的>
2 回答

大話西游666
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個贊
你對對半查找理解錯了,你的min,max應(yīng)該是下標(biāo)而不是值
原理:類似于二分法解方程,二分查找首先比對序列中間的數(shù)是否是要找的數(shù),如果不是,由于是有序數(shù)列,則看其在左側(cè)區(qū)間還是右側(cè)區(qū)間,舍棄不在的那一半?yún)^(qū)間,然后在剩余的區(qū)間重復(fù)剛才的辦法,直到找到該數(shù),由于每次舍棄一半的數(shù)據(jù)量,所以查找效率較高。
描述:設(shè)三個變量 left,right,middle分別為序列的兩側(cè)下標(biāo)和中間下標(biāo),當(dāng)判斷出不在左側(cè)區(qū)間,則 left=middle+1 ,從而利用右側(cè)一半構(gòu)造出一個新區(qū)間,否則 right=middle-1,利用左邊一側(cè)構(gòu)造新區(qū)間,然后重復(fù)剛才過程,如此下去,要么找到數(shù)據(jù),要么left>right,此時也應(yīng)該停止查找,說明序列中沒有該數(shù)。
- 2 回答
- 0 關(guān)注
- 1238 瀏覽
添加回答
舉報
0/150
提交
取消