zoukankan      html  css  js  c++  java
  • 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";
    }
    
    
  • 相关阅读:
    栈(代码分解)
    线性表(代码分解)
    绪论简概
    1006 Sign In and Sign Out (25 分)
    1005 Spell It Right (20 分)
    分支界限法解决0/1背包问题
    Sequence( 分块+矩阵快速幂 )
    Shape Number (最小表示法)
    Age of Moyu (2018 Multi-University Training Contest 7)
    [Cqoi2014]危桥 (两遍网络流)
  • 原文地址:https://www.cnblogs.com/ikai/p/11590464.html
Copyright © 2011-2022 走看看