python php 二分查找

——————————
二分查找 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";
}

posted @ 2019-09-26 13:54  青柚  阅读(122)  评论(0编辑  收藏  举报