//js 实现:
var Arr =[3, 5, 6, 7, 8, 9, 12, 15];
function binary(find, arr, low, high){
if(low <= high){
if(arr[low] == find){
return low;
}
if(arr[high] == find){
return high;
}
var mid = Math.ceil((high + low)/2);
if( arr[mid] == find){
return mid;
} else if(arr[mid] > find){
return binary(find, arr, low, mid);
} else {
return binary(find, arr, mid, high);
}
}
return -1;
}
var a = binary(9, Arr, 0, Arr.length - 1);
console.log('****' + a);
****5
Arr[5]
9
# python 实现
def bin_search(data_list, val):
low = 0
high = len(data_list) - 1
while low <= high:
mid = (low+high)/2
if data_list[mid] == val:
return mid;
elif data_list[mid] > val:
high = mid -1
else:
low = mid + 1
return
ret = bin_search(list(range(1, 10)), 3);
print list(range(1, 10)) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
print ret # 2
print list(range(1, 10))[ret] #3