服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - php数据结构与算法(PHP描述) 查找与二分法查找

php数据结构与算法(PHP描述) 查找与二分法查找

2020-01-03 16:13PHP教程网 PHP教程

php数据结构与算法(PHP描述) 查找与二分法查找,需要的朋友可以参考下

代码如下:


<?php 
/** 
* 查找 

**/ 
// 顺序查找 
function normal_search($arrData,$val) { 
$len = count($arrData); 
if($len == 0) return -1; 
for($i = 0;$i < $len; $i++ ) { 
echo "find No.",$i + 1," value = ",$arrData[$i]," is = ",$val,"? <br/>"; 
// 找到了 
if($arrData[$i] == $val) return $i; 

return -1; 


// 测试顺序查找 
$arrData = array(4,51,6,73,2,5,9,33,50,3,4,6,1,4,67); 
echo normal_search($arrData,6),"<br/>"; 
echo normal_search($arrData,66),"<br/>"; 

// 二分法查找(针对有序的列进行查找) 
function binary_search($arrData,$val) { 
$len = count($arrData); 
if($len == 0) return -1; 

$start = 0; 
$end = $len - 1; 

while($start <= $end) { 
$middle = intval(($start + $end)/2); 
echo "start = ",$start," end = ",$end," middle = ",$middle,"<br/>"; 
if($arrData[$middle] == $val) { 
return $middle; 
} elseif ($arrData[$middle] > $val) { 
$end = $middle - 1 ; 
} elseif ($arrData[$middle] < $val) { 
$start = $middle + 1; 


return -1; 


// 测试一下二分法查找 
$arrData = array(1,2,3,4,5,7,8,9,11,23,56,100,104,578,1000); 
echo binary_search($arrData,578),"<br/>"; 
echo binary_search($arrData,66),"<br/>"; 

延伸 · 阅读

精彩推荐