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

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