快速排序算法

网上有关“快速排序算法”话题很是火热,小编也是针对快速排序算法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

第一趟排序后数组中的元素排列为37、35、38、36、47、53、65、73;

第二趟排序后数组中的元素排列为36、35、37、38、47、53、65、73;

第三趟排序后数组中的元素排列为35、36、37、38、47、53、65、73;

第四趟排序后数组中的元素排列为35、36、37、38、47、53、65、73;

第五趟排序后数组中的元素排列为35、36、37、38、47、53、65、73;

第六趟排序后数组中的元素排列为35、36、37、38、47、53、65、73;

第七趟排序后数组中的元素排列为35、36、37、38、47、53、65、73;

第八趟排序后数组中的元素排列为35、36、37、38、47、53、65、73。

算法原理

下列动图来自五分钟学算法,演示了快速排序算法的原理和步骤。

步骤:

从数组中选个基准值

将数组中大于基准值的放同一边、小于基准值的放另一边,基准值位于中间位置

递归的对分列两边的数组再排序

代码实现

function

quickSort($arr)

{

$len

=

count($arr);

if

($len

<=

1)

{

return

$arr;

}

$v

=

$arr[0];

$low

=

$up

=

array();

for

($i

=

1;

$i

<

$len;

++$i)

{

if

($arr[$i]

>

$v)

{

$up[]

=

$arr[$i];

}

else

{

$low[]

=

$arr[$i];

}

}

$low

=

quickSort($low);

$up

=

quickSort($up);

return

array_merge($low,

array($v),

$up);

}

测试代码:

$startTime

=

microtime(1);

$arr

=

range(1,

10);

shuffle($arr);

echo

"before

sort:

",

implode(',

',

$arr),

"\n";

$sortArr

=

quickSort($arr);

echo

"after

sort:

",

implode(',

',

$sortArr),

"\n";

echo

"use

time:

",

microtime(1)

-

$startTime,

"s\n";

测试结果:

before

sort:

1,

7,

10,

9,

6,

3,

2,

5,

4,

8

after

sort:

1,

2,

3,

4,

5,

6,

7,

8,

9,

10

use

time:

0.0009009838104248s

时间复杂度

快速排序的时间复杂度在最坏情况下是O(N2),平均的时间复杂度是O(N*lgN)。

这句话很好理解:假设被排序的数列中有N个数。遍历一次的时间复杂度是O(N),需要遍历多少次呢?至少lg(N+1)次,最多N次。

1)

为什么最少是lg(N+1)次?快速排序是采用的分治法进行遍历的,我们将它看作一棵二叉树,它需要遍历的次数就是二叉树的深度,而根据完全二叉树的定义,它的深度至少是lg(N+1)。因此,快速排序的遍历次数最少是lg(N+1)次。

2)

为什么最多是N次?这个应该非常简单,还是将快速排序看作一棵二叉树,它的深度最大是N。因此,快读排序的遍历次数最多是N次。

您可能感兴趣的文章:PHP快速排序算法实例分析PHP四种排序算法实现及效率分析冒泡排序,插入排序,选择排序和快速排序PHP排序算法之快速排序(Quick

Sort)及其优化算法详解PHP递归实现快速排序的方法示例php

二维数组快速排序算法的实现代码PHP常用排序算法实例小结基本排序,冒泡排序,快速排序,插入排序PHP快速排序quicksort实例详解

关于“快速排序算法”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[香萱]投稿,不代表欧拉号立场,如若转载,请注明出处:https://ooplay.net/oula/36.html

(18)

文章推荐

  • 当年日本侵华在哪里登陆-

    网上有关“当年日本侵华在哪里登陆?”话题很是火热,小编也是针对当年日本侵华在哪里登陆?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1894年甲午海战之后,日军在辽东(今辽宁)花园口登陆。一八九四年九月十七日,即平壤陷落的第三天,日本联合舰队终于在鸭绿江口大

    2025年12月07日
    25303
  • 太原到北京开车的几个小时

    网上有关“太原到北京开车的几个小时”话题很是火热,小编也是针对太原到北京开车的几个小时寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一、太原到北京按不同的行驶线路来计算,最快约6小时左右,最慢约13小时左右的样子二、自驾走高速最快行驶线路方案参考如下共506

    2025年12月08日
    22300
  • 厦门北到漯河怎么走

    网上有关“厦门北到漯河怎么走”话题很是火热,小编也是针对厦门北到漯河怎么走寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。驾车路线:全程约1382.9公里起点:厦门北站1.厦门市内驾车方案1)从起点向正西方向出发,行驶450米,直行进入岩通路2)沿岩通路行

    2025年12月08日
    21301
  • 王者荣耀中暴击最高多少

    网上有关“王者荣耀中暴击最高多少”话题很是火热,小编也是针对王者荣耀中暴击最高多少寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。《王者荣耀》中暴击最高的五位英雄如下:1、虞姬虞姬的英雄定位为射手,擅长突进/远程消耗,她的二技能使用后拥有闪避所有物理攻击的效果

    2025年12月08日
    25310
  • 板书的类型有哪些

    网上有关“板书的类型有哪些”话题很是火热,小编也是针对板书的类型有哪些寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。板书是教学中所应用的一种主要的教学媒体,板书艺术则是教学艺术的有机组成部分。苏联著名教育家加里宁有一句话“教育事业不仅是科学事业,而且是艺术事

    2025年12月10日
    18305
  • 世界上最大的乌贼 大王乌贼长80米重达50吨(常与鲸鱼搏斗)

    网上有关“世界上最大的乌贼大王乌贼长80米重达50吨(常与鲸鱼搏斗)”话题很是火热,小编也是针对世界上最大的乌贼大王乌贼长80米重达50吨(常与鲸鱼搏斗)寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。乌贼通常被叫做墨斗鱼或者墨鱼,因其遇到敌人是会?喷墨

    2025年12月10日
    21313
  • 如何预约雅思口语考试

    网上有关“如何预约雅思口语考试”话题很是火热,小编也是针对如何预约雅思口语考试寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。由于雅思口语考试要求考生再次进入考场与考官交谈,因此需要重新预约。给大家分享一下如何预约雅思口语考试这一方面的内容,赶紧来看看吧!1.

    2025年12月11日
    17311
  • 五年级上册数学竖式计算题_1

    网上有关“五年级上册数学竖式计算题”话题很是火热,小编也是针对五年级上册数学竖式计算题寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。小学五年级数学上册计算题一、直接写出得数0.5×8=3.6×0.4=39.68×0

    2025年12月11日
    15321
  • 西安公交106路车在边家村是不是不停

    网上有关“西安公交106路车在边家村是不是不停”话题很是火热,小编也是针对西安公交106路车在边家村是不是不停寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。不停106路城南客运站大世界游乐场首车:06:00末车:23:00票价

    2025年12月13日
    12304
  • 蒙古族的特色

    网上有关“蒙古族的特色”话题很是火热,小编也是针对蒙古族的特色寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。蒙古的特色都有什么蒙古菜点特色主要体现在蒙古族的菜点风味上。蒙古族人的饮食比较粗犷,以羊肉、奶、野菜及面食为主要的菜点原料。烹调方法相对比较

    2025年12月13日
    6317
  • 小米yeelight床头灯怎么链接手机?

    网上有关“小米yeelight床头灯怎么链接手机?”话题很是火热,小编也是针对小米yeelight床头灯怎么链接手机?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。拿到Yeelight床头灯之后连接电源,开启床头灯的开关,打开手机蓝牙,点开桌面上Yeelig

    2025年12月13日
    3320
  • 一个支付宝可以和淘宝旺旺阿里巴巴旺旺一起绑定吗?

    网上有关“一个支付宝可以和淘宝旺旺阿里巴巴旺旺一起绑定吗?”话题很是火热,小编也是针对一个支付宝可以和淘宝旺旺阿里巴巴旺旺一起绑定吗?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。旺旺是即时在线聊天工具,支付宝是付款平台,旺旺号是淘宝登录名。淘宝支付宝绑定流

    2025年12月14日
    0306

发表回复

本站作者才能评论

评论列表(3条)

  • 香萱的头像
    香萱 2025年12月06日

    我是欧拉号的签约作者“香萱”

  • 香萱
    香萱 2025年12月06日

    本文概览:网上有关“快速排序算法”话题很是火热,小编也是针对快速排序算法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。第一趟排序后数组中的元素排...

  • 香萱
    用户120609 2025年12月06日

    文章不错《快速排序算法》内容很有帮助