PHP實現的折半查詢算法示例
更新時間:2017年10月09日 08:49:52 作者:CyborgLin
這篇文章主要介紹了PHP實現的折半查詢算法,結合完整實例形式分析了php使用遞歸與非遞歸實現折半查詢的算法操作步驟與使用方法,需要的朋友可以參考下
本文實例講述了PHP實現的折半查詢算法。分享給大家供大家參考,具體如下:
什么是折半查詢算法?具體文字描述自己百度。直接上代碼:
<?php
header("Content-type: text/html; charset=utf-8");
/* 折半查詢算法--不用遞歸 */
function qSort($data = array(), $x = 0){
$startIndex = 0; // 開始索引
$endIndex = count($data) - 1; // 結束索引
$index = 0;
$number = 0; // 計數器
do{
if($endIndex > $startIndex){
$searchIndex = ceil(($endIndex - $startIndex) / 2);
}else if($endIndex == $startIndex){
$searchIndex = $endIndex;
}else{
$index = -1;
break;
}
$searchIndex += ($startIndex - 1);
echo '檢索范圍:'.$startIndex.' ~ '.$endIndex.'<br>檢索位置:'.$searchIndex.'檢索值為:'.$data[$searchIndex];
echo '<br>=======================<br><br>';
if($data[$searchIndex] == $x){
$index = $searchIndex;
break;
}else if($x > $data[$searchIndex]){
$startIndex = $searchIndex + 1;
}else{
$endIndex = $searchIndex - 1;
}
$number++;
}while($number < count($data));
return $index;
}
/* 折半查詢算法--使用遞歸 */
function sSort($data, $x, $startIndex, $endIndex){
if($endIndex > $startIndex){
$searchIndex = ceil(($endIndex - $startIndex) / 2);
}else if($endIndex == $startIndex){
$searchIndex = $endIndex;
}else{
return -1;
}
$searchIndex += ($startIndex - 1);
echo '檢索范圍:'.$startIndex.' ~ '.$endIndex.'<br>檢索位置:'.$searchIndex.'檢索值為:'.$data[$searchIndex];
echo '<br>=======================<br><br>';
if($data[$searchIndex] == $x){
return $searchIndex;
}else if($x > $data[$searchIndex]){
$startIndex = $searchIndex + 1;
return sSort($data, $x, $startIndex, $endIndex);
}else{
$endIndex = $searchIndex - 1;
return sSort($data, $x, $startIndex, $endIndex);
}
}
$data = array(1, 3, 4, 6, 9, 11, 12, 13, 15, 20, 21, 25, 33, 34, 35, 39, 41, 44);
$index = qSort($data, 11); // 不用遞歸的排序方法
$index = sSort($data, 11, 0, count($data) - 1); // 使用遞歸的排序方法
echo '結果:'.$index;
運行結果:

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》及《php程序設計算法總結》
希望本文所述對大家PHP程序設計有所幫助。
相關文章
淺談php中fopen不能創(chuàng)建中文文件名文件的問題
下面小編就為大家?guī)硪黄獪\談php中fopen不能創(chuàng)建中文文件名文件的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
php獲得客戶端瀏覽器名稱及版本的方法(基于ECShop函數)
這篇文章主要介紹了php獲得客戶端瀏覽器名稱及版本的方法,基于ECShop函數get_user_browser實現該功能,非常具有實用價值,需要的朋友可以參考下2015-12-12

