zoukankan      html  css  js  c++  java
  • 冒泡排序

    冒泡排序:

    一、标准冒泡排序


     二、改进一

     每一趟扫描交换,都记录是否存在逆序元素。

      

    举例如下:

      

      一旦经过某趟扫描之后,未发现任何逆序的相邻元素,即意味着排序任务已经完成,则通过返回标志“sorted”,以便算法即使终止。

      改进的过程如下:

      

      跳过红色的部分,直接跳转到尾部。

      


    二、改进二:

      绿色代表无序,红色代表有序;

     反例:有序部分位于后面的部分,无序位于前面。每一躺扫描交换都是交换绿色的最后一个元素,使它就位。

     

    用一种方法检测出这种状态,记录后面红色的部分是否是有序的。

      

      举例如下:last记录了最后一对逆序对的顺序。

      

      复杂度:O(n)+O(n) = O(n)

       

     花费的时间是一个个梯形的和:

     


     三、综合对比:

      上述讲的两个起泡排序算法,最优复杂度是O(n),最坏复杂度是O(n方)

       且都具有稳定性,即对于相同的元素还是和之前的相同。

    陈小洁的三只猫
  • 相关阅读:
    C# 装箱原型
    C# 反射浅谈(一)
    javascript介绍(二)
    javascript介绍(一)
    C#中 托管资源和非托管资源
    varchar && nvarchar 闲谈
    高内聚&&低耦合
    【android】移植IOS视图响应陀螺仪交互行为
    【android】如何实现猿题库题目的排版
    开心工作标准的硬件环境
  • 原文地址:https://www.cnblogs.com/ccpang/p/11415369.html
Copyright © 2011-2022 走看看