数据结构--快速排序

   快速排序学过好几遍了,但是每一次学习都有不一样的收获。最近在学习快速排序时,又有了一点新的认识,准确的来说是真正的知道了快速排序的过程。

   比如用快速排序对  45 36 66 90 45 10 25 88 进行排序,首先对这一组数进行分析,采用第一个数为关键字进行比较。

           初始数据   45  36  66  90  45  10  25  88

                              ↑                                  ↑

        第一次交换  25  36  66  90  45  10  45  88

                                         ↑                       ↑

        第二次交换  25  36  45  90  45  10  66  88

                                         ↑                 ↑

        第三次交换  25  36  10  90  45  45  66  88

                                                ↑          ↑

        第四次交换  25  36  10  45  45  90  66  88  (完成一趟交换)

   完成一趟交换之后,再以之前的关键节点45为基准,左边数为一组,右边数为一组,以各组的第一个数为基准,进行第二趟的交换,如下:

        第一趟交换后  【25  36  10 】 45 【 45  90  66  88 】

                                    ↑           ↑                       ↑          

          第一次交换       10  36  25      45     45   88  66  90 

                                          ↑    

          第二次交换       10  25  36      45     45   88  66  90  (第二趟完成)

    第二趟交换完成的序列为:【10】 25 【36 】45 45 【88 66 90】。一下交换按照新组进行比较和交换


   注意:

     1、在进行第二趟交换时,进行第一次交换的45与88不交换,自动后移,90与88交换,虽然此时都是用的90交换,但是关键字仍然是45,所以第二趟交换完的序列中45出来,后边的仍然分组。

     2、快速排序属于不稳定排序,其空间复杂度和时间复杂度都是O(nlog2n)

   

转载于:https://www.cnblogs.com/victor-grace/p/7253643.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值