php快速排序实现代码,快速排序的算法php实现

function qsort(&$arr)

{

_quick_sort($arr, 0, count($arr) - 1);

}

/**

* 采用递归算法的快速排序。

*

* @param array $arr 要排序的数组

* @param int $low 最低的排序子段

* @param int $high 最高的排序字段

*/

function _quick_sort(&$arr, $low, $high)

{

$low_data = $arr[$low];

$prev_low = $low;

$prev_high = $high;

while ($low < $high)

{

while ($arr[$high] >= $low_data && $low < $high) {

$high--;

}

if ($low < $high) {

$arr[$low] = $arr[$high];

$low++;

}

while ($arr[$low] <= $low_data && $low < $high) {

$low++;

}

if ($low < $high) {

$arr[$high] = $arr[$low];

$high--;

}

}

$arr[$low] = $low_data;

if ($prev_low < $low) {

_quick_sort($arr, $prev_low, $low);

}

if ($low + 1 < $prev_high) {

_quick_sort($arr, $low + 1, $prev_high);

}

}

function quick_sort(&$arr)

{

$stack = array();

array_push($stack, 0);

array_push($stack, count($arr) -1);

while (!empty($stack)) {

$high = array_pop($stack);

$low = array_pop($stack);

$low_data = $arr[$low];

$prev_low = $low;

$prev_high = $high;

while ($low < $high)

{

while ($arr[$high] >= $low_data && $low < $high) {

$high--;

}

if ($low < $high) {

$arr[$low] = $arr[$high];

$low++;

}

while ($arr[$low] <= $low_data && $low < $high) {

$low++;

}

if ($low < $high) {

$arr[$high] = $arr[$low];

$high--;

}

}

$arr[$low] = $low_data;

if ($prev_low < $low) {

array_push($stack, $prev_low);

array_push($stack, $low);

}

if ($low + 1 < $prev_high) {

array_push($stack, $low + 1);

array_push($stack, $prev_high);

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值