php使用递归与迭代实现快速排序示例

代码如下:

/**
 * 递归法实现的快速排序
 * @param $seq
 * @return array
 */
function quicksort($seq)
{
    if (count($seq) > 1) {
        $k = $seq[0];
        $x = array();
        $y = array();
        $_size = count($seq); //do not use count($seq) in loop for.
        for ($i = 1; $i             if ($seq[$i]                 $x[] = $seq[$i];
            } else {
                $y[] = $seq[$i];
            }
        }
        $x = quicksort($x);
        $y = quicksort($y);
        return array_merge($x, array($k), $y);
    } else {
        return $seq;
    }
}

/**用迭代实现
 * @param $seq
 * @return array
 */
function quicksortX(&$seq)
{
    $stack = array($seq);
    $sort = array();
    while ($stack) {
        $arr = array_pop($stack);
        if(count($arr)             if (count($arr) == 1) {
                $sort[] = &$arr[0];
            }
            continue;
        }

        $k = $arr[0];
        $x = array();
        $y = array();
        $_size = count($arr);
        for ($i = 1; $i             if ($arr[$i]                 $x[] = &$arr[$i];
            } else {
                $y[] = &$arr[$i];
            }
        }
        !empty($y) && array_push($stack, $y);
        array_push($stack, array($arr[0]));
        !empty($x) && array_push($stack, $x);
    }
    return $sort;
}
//$testArr = array(5545, 5, 6, 7675, 100, 9, 233, 566, 789, 456, 23, 55, 7, 4, 343, 564, 5, 45657, 8, 998, 9, 34, 34, 55, 6, 5, 6433, 67, 6, 6766, 4, 2, 42, 25634, 34343, 3, 3, 454, 4, 65, 6678, 57, 5455);
for($i=0;$i    $testArr[]=mt_rand(0,10000);
}
//var_dump($testArr);
echo count($testArr).’
‘;
$start=microtime();
echo count(quicksort($testArr)).’
‘;
echo microtime()-$start.’
‘;
var_dump(quicksort($testArr));
echo ‘————————————————————————
‘;
echo count($testArr).’
‘;
$start=microtime();
echo count(quicksortX($testArr)).’
‘;
echo microtime()-$start.’
‘;
var_dump(quicksortX($testArr));

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2304539.html

(0)
上一篇 2025年2月28日 07:55:30
下一篇 2025年2月24日 19:34:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python 算法 排序实现快速排序

    QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完成快速排序的过程。快速排序的最差时间复杂度为O(n2),平时时间复杂度为O(nlgn)。最差时间复杂…

    编程技术 2025年2月27日
    200
  • Python实现快速排序算法及去重的快速排序的简单示例

    快速排序由于排序效率在同为o(n*logn)的几种排序方法中效率较高,因此经常被采用。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右…

    编程技术 2025年2月27日
    200
  • 用Python实现快速排序

    快速排序是一种常用的排序算法,其时间复杂度为 o(nlogn)。在实际应用中,快速排序通常比其他排序算法快得多。python 提供了许多内置的排序函数,但了解和实现快速排序仍然很重要。在本文中,我们将通过 python 实现快速排序算法。 …

    编程技术 2025年2月26日
    200
  • 如何用Python实现快速排序算法?

    如何用Python实现快速排序算法? 快速排序是一种常见而高效的排序算法,它能够在平均情况下以O(n log n)的时间复杂度对一个包含n个元素的列表进行排序。本文将介绍如何使用Python编写快速排序算法的代码示例。 快速排序的基本思想是…

    2025年2月26日
    200
  • 用Python怎么实现快速排序

    用Python实现快速排序的方法:1、定义一个名为quick_sort的函数,使用递归的方法来实现快速排序;2、检查数组的长度,如果长度小于等于1,则直接返回数组,否则,选择数组中的第一个元素作为枢纽元素(pivot),然后将数组分成比枢纽…

    2025年2月26日
    200
  • php如何实现快速排序

    php实现快速排序的方法:首先创建一个PHP示例文件;然后创建交换函数和主函数;接着对低子表和高子表进行递归排序;最后调用QuickSort算法即可。 推荐:《PHP视频教程》 基本思想: 快速排序(Quicksort)是对冒泡排序的一种改…

    2025年2月24日
    200
  • 做快排为什么用老网站?,快排为什么快

    [var] 在数字营销和搜索引擎优化(SEO)的领域中,快速排名(快排)是一个常见且重要的概念,它指的是通过一系列策略和技巧,使网站在搜索引擎结果页面(SERP)中迅速获得较高的排名,许多人在尝试快速排名时,会选择使用老网站作为载体,这背后…

    好文分享 2025年1月12日
    1000
  • 做快排为什么用老网站?,快排为什么快

    [var] 在数字营销和搜索引擎优化(SEO)的领域中,快速排名(快排)是一个常见且重要的概念,它指的是通过一系列策略和技巧,使网站在搜索引擎结果页面(SERP)中迅速获得较高的排名,许多人在尝试快速排名时,会选择使用老网站作为载体,这背后…

    好文分享 2025年1月12日
    900
  • 易语言网站快排原理详解,易语言快速排序

    [var] 在信息技术飞速发展的今天,网站的性能优化成为了开发者们关注的重点,快速排序(Quick Sort)作为一种高效的排序算法,在网站开发中有着广泛的应用,本文将结合易语言(E-Prime)的特点,深入探讨网站开发中快排原理的实现与应…

    好文分享 2025年1月12日
    800
  • 易语言网站快排原理详解,易语言快速排序

    [var] 在信息技术飞速发展的今天,网站的性能优化成为了开发者们关注的重点,快速排序(Quick Sort)作为一种高效的排序算法,在网站开发中有着广泛的应用,本文将结合易语言(E-Prime)的特点,深入探讨网站开发中快排原理的实现与应…

    好文分享 2025年1月12日
    900

发表回复

登录后才能评论