PHP實(shí)現(xiàn)的折半查詢算法示例
本文實(shí)例講述了PHP實(shí)現(xiàn)的折半查詢算法。分享給大家供大家參考,具體如下:
什么是折半查詢算法?具體文字描述自己百度。直接上代碼:
<?php
header("Content-type: text/html; charset=utf-8");
/* 折半查詢算法--不用遞歸 */
function qSort($data = array(), $x = 0){
$startIndex = 0; // 開始索引
$endIndex = count($data) - 1; // 結(jié)束索引
$index = 0;
$number = 0; // 計(jì)數(shù)器
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 '結(jié)果:'.$index;
運(yùn)行結(jié)果:

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》及《php程序設(shè)計(jì)算法總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- PHP有序表查找之二分查找(折半查找)算法示例
- PHP實(shí)現(xiàn)的折半查找算法示例
- php順序查找和二分查找示例
- PHP 冒泡排序 二分查找 順序查找 二維數(shù)組排序算法函數(shù)的詳解
- php線性表順序存儲實(shí)現(xiàn)代碼(增刪查改)
- PHP有序表查找之插值查找算法示例
- PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP二分查找算法示例【遞歸與非遞歸方法】
- php數(shù)據(jù)結(jié)構(gòu)與算法(PHP描述) 查找與二分法查找
- 最新用php獲取谷歌PR值算法,附上php查詢PR值代碼示例
- 使用PHP實(shí)現(xiàn)二分查找算法代碼分享
- PHP區(qū)塊查詢實(shí)現(xiàn)方法分析
相關(guān)文章
異步加載技術(shù)實(shí)現(xiàn)當(dāng)滾動條到最底部的瀑布流效果
當(dāng)滾動條到最底部的時候觸發(fā)一個事件,這個事件寫入$.get()事件,實(shí)現(xiàn)瀑布流效果,下面試具體的實(shí)現(xiàn)2014-09-09
WordPress中注冊菜單與調(diào)用菜單的方法詳解
這篇文章主要介紹了WordPress中注冊菜單與調(diào)用菜單的方法詳解,分別依靠register_nav_menus()函數(shù)與wp_nav_menu()函數(shù)的使用,需要的朋友可以參考下2015-12-12
php Xdebug 調(diào)試擴(kuò)展的安裝與使用.
下載xdebug擴(kuò)展的時候注意xdebug的版本與php版本相對應(yīng),不然出現(xiàn)不必要的麻煩!2010-03-03
PHP Zip壓縮 在線對文件進(jìn)行壓縮的函數(shù)
PHP在線對文件進(jìn)行Zip 壓縮函數(shù)代碼,用于使用PHP在線創(chuàng)建ZIP壓縮文件。2010-05-05
PHP實(shí)現(xiàn)處理三級分類數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用PHP實(shí)現(xiàn)處理三級分類數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考一下2024-02-02
支持漢轉(zhuǎn)拼和拼音分詞的PHP中文工具類ChineseUtil
本文給大家推薦的是一款PHP的中文分詞工具類,功能包括支持漢字轉(zhuǎn)拼音、拼音分詞、簡繁互轉(zhuǎn)。非常不錯,有需要的小伙伴可以參考下2018-02-02
PHP字符串長度計(jì)算 - strlen()函數(shù)使用介紹
在PHP中,函數(shù)strlen()返回字符串的長度,strlen()函數(shù)返回字符串所占的字節(jié)長度,一個英文字母、數(shù)字、各種符號均占一個字節(jié),它們的長度均為12013-10-10

