PHP實(shí)現(xiàn)的折半查詢(xún)算法示例
本文實(shí)例講述了PHP實(shí)現(xiàn)的折半查詢(xún)算法。分享給大家供大家參考,具體如下:
什么是折半查詢(xún)算法?具體文字描述自己百度。直接上代碼:
<?php header("Content-type: text/html; charset=utf-8"); /* 折半查詢(xún)算法--不用遞歸 */ function qSort($data = array(), $x = 0){ $startIndex = 0; // 開(kāi)始索引 $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; } /* 折半查詢(xún)算法--使用遞歸 */ 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)容感興趣的讀者可查看本站專(zhuān)題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP基本語(yǔ)法入門(mén)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》及《php程序設(shè)計(jì)算法總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP有序表查找之二分查找(折半查找)算法示例
- PHP實(shí)現(xiàn)的折半查找算法示例
- php順序查找和二分查找示例
- PHP 冒泡排序 二分查找 順序查找 二維數(shù)組排序算法函數(shù)的詳解
- php線(xiàn)性表順序存儲(chǔ)實(shí)現(xiàn)代碼(增刪查改)
- PHP有序表查找之插值查找算法示例
- PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP二分查找算法示例【遞歸與非遞歸方法】
- php數(shù)據(jù)結(jié)構(gòu)與算法(PHP描述) 查找與二分法查找
- 最新用php獲取谷歌PR值算法,附上php查詢(xún)PR值代碼示例
- 使用PHP實(shí)現(xiàn)二分查找算法代碼分享
- PHP區(qū)塊查詢(xún)實(shí)現(xiàn)方法分析
相關(guān)文章
PHP中比較兩個(gè)對(duì)象的幾種方式小結(jié)
在PHP中,比較兩個(gè)對(duì)象并不是一件直接明了的事情,因?yàn)閷?duì)象之間的比較通常依賴(lài)于它們的屬性和狀態(tài),而這些屬性和狀態(tài)可能非常復(fù)雜且多樣化,本文給大家總結(jié)了PHP中比較兩個(gè)對(duì)象的幾種方式,需要的朋友可以參考下2024-09-09淺談php中fopen不能創(chuàng)建中文文件名文件的問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談php中fopen不能創(chuàng)建中文文件名文件的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02php獲得客戶(hù)端瀏覽器名稱(chēng)及版本的方法(基于ECShop函數(shù))
這篇文章主要介紹了php獲得客戶(hù)端瀏覽器名稱(chēng)及版本的方法,基于ECShop函數(shù)get_user_browser實(shí)現(xiàn)該功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-12-12PHP跨時(shí)區(qū)(UTC時(shí)間)應(yīng)用解決方案
解決PHP跨時(shí)區(qū)應(yīng)用需要將將程序內(nèi)部時(shí)區(qū)設(shè)置為UTC時(shí)間.(UTC 也可以叫 GMT) 數(shù)據(jù)庫(kù)中存儲(chǔ)UTC時(shí)間等等,感興趣的朋友可以了解下2013-01-01WordPress網(wǎng)站訪(fǎng)問(wèn)慢解決方案細(xì)圖文教程
這篇文章主要介紹了WordPress網(wǎng)站訪(fǎng)問(wèn)慢解決方案細(xì)圖文教程,wordpress訪(fǎng)問(wèn)慢一直是一個(gè)比較頭疼的問(wèn)題,有正好需要的同學(xué)可以嘗試下,感覺(jué)不錯(cuò)的可以分享給大家2021-03-03PHP刪除數(shù)組中指定值的元素常用方法實(shí)例分析【4種方法】
這篇文章主要介紹了PHP刪除數(shù)組中指定值的元素常用方法,結(jié)合實(shí)例形式對(duì)比分析了4種常用的數(shù)組遍歷與元素刪除方法,并總結(jié)分析了相關(guān)算法優(yōu)缺點(diǎn),需要的朋友可以參考下2018-08-08php實(shí)現(xiàn)的返回?cái)?shù)據(jù)格式化類(lèi)實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)的返回?cái)?shù)據(jù)格式化類(lèi)及其應(yīng)用實(shí)例,包括針對(duì)XML、JSON等的格式化,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09