Loading

冒泡排序

冒泡排序:

一、标准冒泡排序


 

 二、改进一

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

  

举例如下:

  

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

  改进的过程如下:

  

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

  


 

二、改进二:

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

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

 

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

  

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

  

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

   

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

 


 

 

 三、综合对比:

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

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

 

posted @ 2019-08-26 22:09  三只猫-  阅读(160)  评论(0编辑  收藏  举报