php 快速排序函数,PHP实现快速排序

您现在的位置是:网站首页>>PHP>>php

PHP实现快速排序

发布时间:2019-02-25 11:23:44作者:wangjian浏览量:572点赞量:0

这里总结一下快速排序的实现

算法原理:

从数列中挑出一个元素,称为 “基准”(pivot);

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

上面是官方的快速排序算法解释,说明有点官方,下面总结了一下通俗易懂的解释:

通过设置一个初始中间值,来将需要排序的数组分成3部分,小于中间值的左边,中间值,大于中间值的右边,继续递归用相同的方式来排序左边和右边,最后合并数组

图形说明:

ee3ccd292fed3aea9243ee1e3267964f.png

快速排序实现代码:$arr = [5,7,4,6,3,8,2,0,9,1];

$sort = quick_sort($arr);

echo '

';

print_r($sort);

function quick_sort($arr)

{

//判断传入的数组是否只有一个,只有一个不需要进行排序,直接返回

if (count($arr) <= 1) {

return $arr;

}

$middle = $arr[0]; // 设置中间值

$left = array(); // 接收小于中间值

$right = array();// 接收大于中间值

// 循环比较

for ($i=1; $i < count($arr); $i++) {

if ($middle < $arr[$i]) {

// 大于中间值

$right[] = $arr[$i];

} else {

// 小于中间值

$left[] = $arr[$i];

}

}

// 递归排序划分好的2边

$left = quick_sort($left);

$right = quick_sort($right);

// 合并排序后的数据

return array_merge($left, array($middle), $right);

}

输出结果为:

ba5f5af26c8968dbfda93b2a3923f6b8.png

参考:https://mp.weixin.qq.com/s/vn3KiV-ez79FmbZ36SX9lg

272a2ff497ff398701eef161070cd122.png

0

+1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值