二分查找主要是找出中間值涌献,如果目標(biāo)值在中間值左邊燕垃,就將搜索區(qū)域移動(dòng)到左邊印叁,如果在右邊移動(dòng)到右邊
let list = [1,4,6,9,10,33,45,66,77]
func binarySearch(_ array:[Int], _ targat:Int) -> (Int,Bool){
var left = 0, right = array.count-1, middel = 0
while left <= right {
middel = left + (right - left)/2
if array[middel] == targat {
return (middel,true)
}
if array[middel] < targat {
left = middel+1
}else{
right = middel-1
}
}
return (-1,false)
}
print(binarySearch(list, 78))
時(shí)間復(fù)雜度 O(log2n)