php三种排序算法以及效率测试
<?php
//select
$arr = range(1,10000);
shuffle($arr);
var_dump('select start');
$start_time=microtime('get_as_float');
for($i=0;$i<count($arr)-1;$i++){
$max_key = $i;
for($j=$i+1;$j<count($arr);$j++){
if($arr[$j]>$arr[$max_key]){
$tmp = $max_key;
$max_key = $j;
$j = $tmp;
}
}
if($max_key != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$max_key];
$arr[$max_key] = $tmp;
}
}
$end_time=microtime('get_as_float');
var_dump($end_time-$start_time);
sleep(3);
//bubble
$arr = range(1,10000);
shuffle($arr);
var_dump('bubble start');
$start_time=microtime('get_as_float');
for($i=0;$i<count($arr)-1;$i++){
for($j=$i+1;$j<count($arr);$j++){
if($arr[$i]<$arr[$j]){
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
$end_time=microtime('get_as_float');
var_dump($end_time-$start_time);
sleep(3);
//insert
$arr = range(1,10000);
shuffle($arr);
var_dump('insert start');
$start_time=microtime('get_as_float');
for($i=1;$i<count($arr);$i++){
for($j=$i-1;$j>=0;$j--){
if($arr[$j+1] > $arr[$j]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}else{
break;
}
}
}
$end_time=microtime('get_as_float');
var_dump($end_time-$start_time); |