• 排序—冒泡排序


     1     public static void bubbleSortAsc(int[] list){
     2         boolean needNextPass = true;
     3         for(int k=1;k<list.length && needNextPass;k++){
     4             needNextPass = false;
     5             for(int i=0;i<list.length-k;i++){
     6                 if(list[i]>list[i+1]){
     7                     int temp = list[i];
     8                     list[i] = list[i+1];
     9                     list[i+1] = temp;
    10                     needNextPass = true;
    11                 }
    12             }
    13         }
    14     }

    在某次记录中如果没有发生交换,那么久不必进行下一次遍历,因为所有的元素都已经排好序。使用该特性改进排序增加boolean needNextpass参数。

    冒泡排序时间:

      在最佳情况下,冒泡排序算法只需要一次遍历就能确定数组已经排序完毕,不需要进行下一次遍历。由于第一次遍历的次数为n-1,因此在最佳情况下,冒泡排序的时间为:O(n).

      在最差情况下,冒泡排序算法需要进行n-1次遍历。第一次遍历需要n-1次比较;第二次遍历需要n-2次比较;一次类推,最后一次需要1次比较。因此比较的总数为(n-1)+(n-2)+...+2+1=(n-1)n/2=n平方/2-n/2=O(n平方)。

      因此在最差情况下,冒泡排序的时间为O(n平方)。

      说明: 摘自java语言程序设计进阶篇。

  • 相关阅读:
    ubuntu开机挂载磁盘盘出现:Metadata kept in Windows cache, unable to mount
    ubuntuaptgetoldversion
    evince 41.2ubuntu 16.04snap
    ubuntu坚果云安装deb后启动不了
    电影票分析
    jieba分词讲解2
    期末总结建议
    软件架构师工作看法
    jieba分词讲解1
    1
  • 原文地址:https://www.cnblogs.com/zsslll/p/5378739.html
Copyright © 2020-2023  润新知