二分查找法在索引大记录数时速度非常快,比遍历记录的速度快上若干数量级。
通常在数据小时看不出有什么特点,有时还不如遍历数据快,但在遍历大记录时他的速度却是显而易见的。
大家可以改变下面例子中$arr 数组的不同大小来感受一下二分查找法的速度。
下面是二分查找法在php应用里的一个简单例子。希望对大家有用。
以下为引用的内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP程序员站 www.phperz.com </title> </head> <body> <?php $arr=range(1,50); //建立一个50个元素的连续数组 //print_r($arr); $a=30; //待查找的数 $start=0; //查找的起始位址 $end=count($arr)-1; //查找的结束位址 $z=0; //计录循环次数 while ($statr<=$end){ $z++; $i=floor(($start + $end)/2); $j=$arr[$i]; // 中间记录 if ($a<$j){ $end=$i-1; } elseif ($a > $j){ $start=$i+1; } else { $find=$arr[$i]; break; } } echo $find; echo "<br>循环了".$z."次"; ?> </body> </html>
|