<?php //-------------------- // 基本数据结构 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($arr, $low, $high, $k) { if($low<=$high) { $mid = intval(($low+$high)/2); if($arr[$mid] == $k) { return $mid; } elseif($k<$arr[$mid]) { return bin_sch($arr,$low,$mid-1,$k); } elseif($k>$arr[$mid]) { return bin_sch($arr,$mid+1,$high,$k); } } return -1; } //顺序查找(数组里查找某个元素) function seq_sch($array, $n, $k) { $array[$n] = $k; for($i=0; $i<$n; $i++) { if($array[$i]==$k) { break; } } if($i<$n) { return $i."The Element is here"; } else { return '-1Sorry'; } } for($i=0;$i<1000000;$i++) {//测试数组 $arr1[$i] = $i+1; } $time_start = explode(" ",microtime()); seq_sch($arr1,1000000,895624); $time_end = explode(" ", microtime()); echo "顺序查找法所需要的时间:"; echo ($time_end[0]+$time_end[1] - $time_start[0]-$time_start[1])."<br>";测试顺序查找法所需要的时间 echo '----------------------------------——————'.'<br>'; $time_start = explode(" ",microtime()); bin_sch($arr1,0,999999,895624).'<br>'; $time_end = explode(' ', microtime()); echo "二分查找法所需要的时间:"; echo ($time_end[0]+$time_end[1] - $time_start[0]-$time_start[1]).'<br>';//测试二分查找法所需要的时间 ?> 测试结果: 顺序查找法所需要的时间:0.36866903305054 ---------------------------------- 二分查找法所需要的时间:0.00011110305786133 在执行效率上二分查找法远大于顺序查找法