900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php快速排序实现代码 快速排序的算法php实现

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

时间:2023-04-13 21:07:13

相关推荐

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);

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。