• 排序算法--冒泡排序


    冒泡排序:

    冒泡排序(Bubble Sort)是一种简单的排序方法。基本思想就是通过相邻的元素之间的比较和交换,使冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。

    算法实现:

    
    
     1 public class BubbleSort {
     2     /**
     3      * 
     4      * 从小到大排序
     5      */
     6     public static void main(String args[]){
     7         int array[] = {1 , 6 , 9 , 7 , 3 };
     8         for(int i = 1 ; i < array.length; i++){
     9             for(int j =0 ; j < array.length-i; j++){
    10                 if(array[j] > array[j+1]){
    11                     int temp = array[j]; //中间变量
    12                     array[j] =array[j+1]; //交换位置
    13                     array[j+1] = temp;
    14                 }
    15             }
    16             System.out.print("第"+i+"次排序的结果: 	");
    17             for(int j = 0 ; j < array.length; j++){
    18                 System.out.print(array[j] +"	");
    19             }
    20            System.out.println("");
    21         }
    22         System.out.println("冒泡排序后的结果:");
    23         for(int i = 0 ; i < array.length; i++){
    24             System.out.print(array[i] +"	" );    
    25     }
    26   }
    27 }
    
    
    
    
    

    算法分析:

    若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C

    和记录移动次数M均达到最小值:C=n-1,M=0

    所以,冒泡排序最好的时间复杂度为0(n)。

    由上面代码可知,其外层循环执行 n-1次。内层循环最多的时候执行n次,最少的时候执行1次,平均执行 (n+1)/2次。
    所以循环体内的比较交换约执行 (n - 1)(n + 1) / 2 = (n^2 - 1)/2(其中n^2是仿照Latex中的记法,表示n的平方)。按照计算复杂度的原则,去掉常数,去掉最高项系数,其复杂度为O(n^2)

     

    算法稳定性:

    冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

  • 相关阅读:
    Winform自定义窗体样式,实现标题栏可灵活自定义
    肿瘤转录组数分析CRN:Cancer RNA-Seq Nexus
    TCGA系列--miRNA数据分析
    TCGA系列--甲基化神器mexpress
    R:reshape2包中的melt
    TCGA系列--GDCRNATools
    R软件中排序:sort(),rank(),order()
    TCGA系列--TCGA长链非编码RNA的可视化工具TANRIC
    记一次RabbitMQ解决分布式事务问题
    RabbitMQ整合Spring Booot【死信队列】
  • 原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/7432445.html
Copyright © 2020-2023  润新知