用php实现快速排序算法

用php实现快速排序算法

快速排序算法的原理主要是通过递归的思路来进行排序,我上网查过很多phper的程序发现都不是很清晰,现将代码贴出,供大家参考。

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 03/03/2017
 * Time: 10:53
 */

/*
 * 1.快速排序法
 * 原理见:https://www.oschina.net/question/1397765_159365
 */

function quickSort($arr){
    if (count($arr) > 1){
        //从数组中选出一个"基准"
        $k = $arr[0];
        $x = array();
        $y = array();
        $size = count($arr);
        for ($i = 1; $i < $size; $i++){
            if ($arr[$i] <= $k){
                $x[] = $arr[$i];
            }elseif($arr[$i] > $k){
                $y[] = $arr[$i];
            }
        }

        //使用递归算法,在$arr有两个值以上时调用quickSort()
        $x = quickSort($x);
        $y = quickSort($y);

        //将"基准"和递归的两个数组进行合并
        return array_merge($x, array($k), $y);

    }else{
        return $arr;
    }
}

$arr = [13, 25, 109, 1, 11, 98];
$res = quickSort($arr);
var_dump($res);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值