二分法查找(折半查找)
适用于数据量较大,且数据是排好序的。
解题思路:假设数据是按升序排序的,对于给定的要查找的k,从数列
的中间位置mid开始比较
如果arr[mid]等于k,则查找成功;
如果arr[mid]小于k,left = mid +1,则在数列的后半段查找( arr[mid+1] , arr[right] )
如果arr[mid]大于k, right= mid - 1,则在数列的前半段查找(arr[left] , arr[mid -1])
例题
给定一个数组arr[] = {1,2,3,4,5,6,7,8,9,10}要查找的值k = 7,刚开始arr[left]=1,
arr[right] = 10, mid = (0+9)/2 = 4,所以arr[mid] = 5。
k>arr[mid],所以left = mid + 1= 5,mid = (5+9)/2 = 7, 此时arr[left] = 6,
arr[mid] = 8, arr[right] = 10. k<arr[mid],所以right= mid - 1,在重新找到
mid的值,如果继续重复以上步骤知道找到为止。

代码如下
