先贴测试结果
[root@fbsd /tmp]# time php ./search_value.php
real 0m1.869s
user 0m1.770s
sys 0m0.095s
[root@fbsd /tmp]# time python ./search_value.py
real 0m10.096s
user 0m9.578s
sys 0m0.158s
上述Python是python2,如果用python3执行,花的时间更多,只能呵呵了。
PHP7(版本为7.0.2)的代码
#!/usr/bin/env php
<?php
function binsearch($data , $key)
{
$low = 0;
$high = count($data);
$found = -1;
while($low < $high) {
$mid = ($low + $high) / 2;
if($key == $data[$mid]) {
$found = $mid;
break;
} else
if($key < $data[$mid])
$high = $mid;
else
$low = $mid + 1;
}
return $found;
}
$mydata = array();
$max_value = 1000000;
for($i=0;$i< $max_value;$i++){
$mydata[$i] = $i;
}
foreach($mydata as $i) {
binsearch($mydata, $i);
}
?>
Python版(版本为2.7.10)的代码
def binsearch(data,key):
low = 0
high = len(data)
i = 0
found = -1
while low < high:
mid = (low+high) / 2
if key == data[int(mid)]:
found = int(mid)
break
else:
if key < data[int(mid)]:
high = mid
else:
low = mid + 1
return found
a = []
max_value=1000000
for n in range(0,max_value):
a.append(n)
n = 0
for n in a:
binsearch(a,n)