php快速排序的算法

开发技术 作者: 2024-07-27 11:55:01
php快速排序的算法

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

function qsort(&$arr)
{
    _quick_sort($arr,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);
        }
    }
}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_51674.html
php快速排序的算法