——————————
二分查找 python实现
#!/usr/bin/python
# 输入的列表必须是已经排好序的列表
def binary_search(li, val):
left = 0 #定义开始范围
right = len(li)-1 #定义查找结束范围
while left <= right: #如果左边的值小于右边的值 证明候选区还有值 继续循环查找
mid = (left+right) // 2 #获取候选区中间的值
if li[mid] == val: #如果中间值等于要查找的值 则结束算法
print mid
return
elif li[mid] > val: # 如果中间的值大于要查找的值 则证明右边的范围值需要按照中间值进行折半 mid-1 是不需要和原来的中间值比较
right = mid - 1
else:#li[mid] < val
left = mid+1 # 如果中间的值小于要查找的值 则证明左边的范围值需要按照中间值进行折半 mid+1 是不需要和原来的中间值比较
else:
print "none" # 否则就是没找到值
#时间复杂度 O(logn) 相比线性查找效率更高
_______________________
// 二分查找 php实现
function binary_search($li,$value)
{
$li_lenght = count($li);
$left = 0;
$right = $li_lenght;
while ($left < $right) {
$mid = round(($left+$right)/2);
if ($li[$mid] == $value) {
return "ok";
}
if ($value > $li[$mid]) {
$left = $mid + 1;
}
if ($value < $li[$mid]) {
$right = $mid - 1;
}
}
return "none";
}