zoukankan      html  css  js  c++  java
  • 二分算法(折半算法)详解

    二分查找又称折半查找 ,它是一种效率较高的查找方法。

    【二分查找要求】:
    1.必须采用顺序存储结构
    2.必须按关键字大小有序排列。

    【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;
    其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而 查找频繁的有序列表。

    【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记 录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

    重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。


    <?php
    /***  二分算法查找
    	* @param array $array 要查找的数组
    	* @param int $min_key  数组的最小下标
    	* @param int $max_key  数组的最大下标
    	* @param mixed $value  要查找的值
    	* @return boolean
    	*/
    	
    
    	function bin_search($array,$min_key,$max_key,$value){
    		if($min_key <= $max_key){
    			$key = intval(($min_key+$max_key)/2);
    			if($array[$key] == $value){
    				return true;
    			}elseif($value< $array[$key]){
    				return bin_search($array,$min_key,$key-1,$value);
    			}else{
    				return bin_search($array,$key+1,$max_key,$value);
    			}
    		}else{
    			return false;
    		}
    	}
    	
    	//现在我们来测试一下这个函数
    	$array = array(1,22,23,45,58);
    	$value = 45;
    	$min_key = min(array_keys($array));
    	$max_key = max(array_keys($array));
    	if(bin_search($array,$min_key,$max_key,$value)){
    		echo 'Sucess';
    	}else{
    		echo 'Faliure';
    	}
    ?>

    看看就明白了,嗯。





    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    C++强制类型转换操作符 const_cast
    URL的UTF-8 decode
    react-8 路由
    react-7 条件渲染与列表渲染
    react-6 react 生命周期
    react-5 受控组件,非受控组件与高阶函数
    react-4 react 组件的三大属性
    react-3 JSX 语法
    react-2 react环境搭建
    react-1 React
  • 原文地址:https://www.cnblogs.com/iplus/p/4489976.html
Copyright © 2011-2022 走看看