二分查找的實(shí)現(xiàn),和易錯(cuò)點(diǎn)
2023-07-01 21:04 作者:MicroShuai | 我要投稿
輸入: nums = [-1,0,3,5,9,12], target = 9?
輸出: 4 解釋: 9?出現(xiàn)在 nums 中并且下標(biāo)為 4
二分查找要滿足兩個(gè)條件:
1??: 元素都是從小到大,或者從大到小排列?
2??:元素不重復(fù)
1??寫代碼易錯(cuò)點(diǎn), left<=right 是循環(huán)的結(jié)束條件,當(dāng)left比right大時(shí),說明沒有找到對應(yīng)的值
? 如果條件為left<right ,那right指針應(yīng)該為arr.length 但是沒有作為長度為下標(biāo)的元素,這樣的寫法并不推薦
2??mid?為什么是left+(right-left)/2?
? ? 如果當(dāng)left 和 right 很大的時(shí)候,會溢出,超過int最大值,所以使用right-left 來保證不會溢出
總結(jié): 二分查找的復(fù)雜度為O(log2n) 隨這n越來越大,相比O(n)?時(shí)間復(fù)雜度會越來越小

標(biāo)簽: