国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實現的折半查找算法示例

2024-05-05 00:01:31
字體:
來源:轉載
供稿:網友

本文實例講述了PHP實現的折半查找算法。分享給大家供大家參考,具體如下:

定義:折半查找技術,也就是二分查找。它的前提是線性表中的記錄必須是關鍵碼有序(通常從大到小有序),線性表必須采用順序存儲。

折半查找的基本思想:取中間記錄作為比較對象,若給定值與中間記錄的關鍵字,則在中間記錄的關鍵字相等,則查找成功;若給定值小于中間記錄的作伴去繼續查找;若給定值大于中間記錄的關鍵字,則在中間記錄的右半區繼續查找。不斷重復上述過程,直到查找成功,或所有查找區域無記錄,查找失敗為止。

實現代碼:

<?php//遞歸方式function bin_recur_search($arr,$val){  global $time;  if(count($arr) >= 1){    $mid = intval(count($arr) / 2);    $time++;    if($arr[$mid] == $val){      return '值為:'.$arr[$mid].'<br>查找次數:'.$time.'<br>';    }elseif($arr[$mid] > $val){      $arr = array_splice($arr,0,$mid);      return bin_recur_search($arr, $val);    }else{      $arr = array_slice($arr,$mid + 1);      return bin_recur_search($arr, $val);    }  }  return '未找到'.$val;}//非遞歸方式function bin_search($arr,$val){  if(count($arr) >= 1){    $low = 0;    $high = count($arr);    $time = 0;    while($low <= $high){      $time++;      $mid = intval(($low + $high)/2);      if($val == $arr[$mid]){        return '索引:'.$mid.'<br>值為:'.$arr[$mid].'<br>查找次數:'.$time;      }elseif($val > $arr[$mid]){        $low = $mid + 1;      }else{        $high = $mid - 1;      }    }  }  return '未找到'.$val;}$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);echo bin_recur_search($arr, 673);echo bin_search($arr, 673);?>

運行結果:

值為:673查找次數:4索引:10值為:673查找次數:4

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 广德县| 彭水| 吉隆县| 奉化市| 阳山县| 泸州市| 乌拉特中旗| 阿拉善左旗| 邮箱| 永康市| 岫岩| 福贡县| 安康市| 禄劝| 桃江县| 雷山县| 色达县| 博爱县| 体育| 阿图什市| 乐都县| 屏南县| 城固县| 南城县| 迭部县| 遂宁市| 渭源县| 大名县| 静宁县| 朔州市| 黎城县| 兴业县| 奉新县| 桃园县| 沙湾县| 呼和浩特市| 香港 | 洮南市| 宁陵县| 景泰县| 汤原县|