我今天特地试验了一下两者的性能
php自带的排序函数 100000的数据 排序 平均耗时0.068s
for ($i = 0; $i<100000;$i++){
$arr[] = rand(0,10000);
}
$t1 = microtime(true);
sort($arr);
$t2 = microtime(true);
echo "php自带排序sort()耗时:".($t2-$t1);
自己写的快速排序 平均耗时1.0s
for ($i = 0; $i<100000;$i++){
$arr[] = rand(0,100000);
}
$t1 = microtime(true);
$returnAr = quickSort($arr);
$t2 = microtime(true);
echo "快速排序耗时:".($t2-$t1);
//快速排序
function quickSort($arr) {
//先判断是否需要继续进行
$length = count($arr);
if($length <= 1) {
return $arr;
}
//选择第一个元素作为基准
$base_num = $arr[0];
//遍历除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$left_array = array(); //小于基准的
$right_array = array(); //大于基准的
for($i=1; $i<$length; $i++) {
if($base_num > $arr[$i]) {
//放入左边数组
$left_array[] = $arr[$i];
} else {
//放入右边
$right_array[] = $arr[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
//合并
return array_merge($left_array, array($base_num), $right_array);
}
明显是php自带的函数排序速度快很多。
但重点是,为什么还有那么多问题是问 如何用php实现快速排序等算法?