qq_30756847 2017-05-25 15:34 采纳率: 0%
浏览 2528

php自带的sort排序和用php实现排序算法的性能比较?

我今天特地试验了一下两者的性能
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实现快速排序等算法?

  • 写回答

2条回答 默认 最新

  • 双木有兮木有辛 2017-05-26 08:08
    关注

    我估计原因是这样的。

    php是脚本语言,脚本语言有个特点,代码编写简单,但是执行效率低。(这就意味着不同语言编写的排序函数没有可比性)
    c/c++等编译语言,代码编写复杂,但是执行效率高。

    至于实现快速排序算法,其实和语言无关。应该是php比较流行的原因,想借php入手,学习一些算法。

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样