• 数据结构--快速排序


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

       比如用快速排序对  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)

       

  • 相关阅读:
    模板方法模式
    结构型模式
    组合模式
    享元模式
    [STL离散化]Skyscrapers的lower_bound系列
    [水]浙大校赛补题
    [数]来自亮亮OJ的五道数学题
    [数]被数学淹没不知所措
    [tour]2019HUST onsite签到
    [树组BIT]训练两题重新理解ver.
  • 原文地址:https://www.cnblogs.com/victor-grace/p/7253643.html
Copyright © 2020-2023  润新知