Binary search
Ideas:
Array must be sorted
While low <= high, keep searching
Set a mid position
If target value > mid value, shift right (low = mid + 1)
If target value < mid value, shift left (high = mid - 1)
In python, we need to use "//" to get mid value
Time complexity n, \frac{n}{2} ,\frac{n}{4},\frac{n}{8}, we can get \frac{n}{2^k}, and set \frac{n}{2^k} = 1, we can get O(h) = O(log2n)
def search(self, nums: List[int], target: int) -> int:
mid, low, high = 0, 0, len(nums)-1
while(low<=high):
mid = (high-low)//2 + low #round down
if nums[mid] == target: return mid
elif nums[mid]>target: high = mid - 1
elif nums[mid]<target: low = mid + 1
return -1
Comments
Post a Comment