亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

php二分法查找(也叫折半查找)算法 (數組必須是從小到大的)

標簽:
PHP

<?php
//php二分法查找(也叫折半查找)算法/ 数组必须是从小到大的
$abs=array(1,12,13,114,115,116,117,118);
//z查找数组的最大下标
$hight = count($abs) - 1 ;
$low =0;
$num = 6;
//var_dump($abs);
//基本思想
// 1首先找到根据下标找到中间这个数字
// 2如果要找的数字大于中间这个数字,则继续向后进行二分查询, 折半查询
// 3如果要找的数字小于中间的数,则继续向前进行二分法查询,折半查询 找到时 希望能同时找到元素下标

//如果起始下标大于终止下标,说明未找到
function dichotomy($abs,$low,$hight,$num) {

if($low > $hight){
      return false;
 }

//取出中间元素下标,现在是向下去
   $center = floor(($low + $hight)/2);
if($abs[$center] > $num ){
    //要查询的数小于中间的数,向前查,那么这时候最大下标为 ,中间这个数的下标-1
    $hight  =  $center-1;
    //再进行递归调用
    return dichotomy($abs,$low,$hight,$num);
 } 
 else if($abs[$center] < $num){
    //要查询的数字大于中间的数字,向后查,那么这时候最大下标为,$hight  最小下标为 $center +1 
    $low = $center + 1 ;
    return dichotomy($abs,$low,$hight,$num);

 }else{

      //找到这个数,  返回下标
      return $center;
 }

}

$date= dichotomy($abs,0,$hight,115);
var_dump($date);

?>

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
PHP開發工程師
手記
粉絲
16
獲贊與收藏
81

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消