zoukankan      html  css  js  c++  java
  • 常见算法之0---冒泡排序

    冒泡排序算法:轻者上浮,重者下沉。(或者正好相反) 

    基本思想:

    1.比较相邻的元素。

    2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

    3.针对所有的元素重复以上的步骤,除了最后一个。

    4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    本质上是:第一趟,选出最大(或最小)元素,第二趟,选出次大(或次小的)的元素…..

    示例:

    定义数组:{ 4, 2, 62, 9, 22, 1,14,10 }

    第1趟排序后:[2, 4, 9, 22, 1, 14, 10, 62]  //选取最大元素62,放在了最后

    第2趟排序后:[2, 4, 9, 1, 14, 10, 22, 62]  //选出了次大元素22 ,放在了倒数第二位….

    第3趟排序后:[2, 4, 1, 9, 10, 14, 22, 62]

    第4趟排序后:[2, 1, 4, 9, 10, 14, 22, 62]

    第5趟排序后:[1, 2, 4, 9, 10, 14, 22, 62]

    第6趟排序后:[1, 2, 4, 9, 10, 14, 22, 62]

    第7趟排序后:[1, 2, 4, 9, 10, 14, 22, 62]

    代码:

    int i,j,t;
    int [] a={4,2,6,9,22,1,100};
    for( i=0;i<n-1;i++){
       for( j=0;j<n-i-1;j++){   //注意这两个for循环是怎么写的。
          if(a[j]>a[j+1]){   //满足条件的话,交换两个元素。
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
          }
      }
    }

    时间复杂度:最好情况,O(n) ;最坏(逆序) O(n*n)。是稳定的排序。

     (稳定排序:待排序的记录序列中可能存在两个或两个以上关键字相等的记录。

    排序前的序列中Ri领先于Rj(即i<j).若在排序后的序列中Ri仍然领先于Rj,则称所用的方法是稳定的。)

  • 相关阅读:
    【HDOJ5538】House Building(计算几何)
    maven操作
    Guava 是个风火轮之函数式编程(3)——表处理
    guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁
    guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用
    Google Guava官方教程(中文版)
    Guava中Predicate的常见用法
    guava函数式编程
    idea常用快捷键
    guava
  • 原文地址:https://www.cnblogs.com/xiaoChongUp/p/3238788.html
Copyright © 2011-2022 走看看