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

    最近突然想研究下算法。嗯,最简单的应该是冒泡排序(BubbleSort)。

    对一个数组进行冒泡排序,是把小的数往前排。这时应从数组最后一个数开始历遍。

    而冒泡排序也叫下沉排序,是把大的数往后排,应从数组第一个数开始历遍。

    以下沉排序为例,通过相邻元素的比较(Array[j]和Array[j+1]),第一次历遍可把最大的元素确定,即最后一个元素Array[n-1]。

    第i次历遍,可把第i大元素确定,即Array[n-i]。

    有点凌乱,其实学算法应该根据实例来分析的,最后再总结规律。下面是一可执行的排序类。

    package algorithm;

    public class BubbleSort
    {
     //排序算法
     public static void bubbleSort(int[]array)
     {
      for(int i=0;i<array.length-1;i++)
      {
       for(int j=0;j<array.length-i-1;j++)
       {
        if(array[j]>array[j+1])
        {
         int temp=array[j];
         array[j]=array[j+1];
         array[j+1]=temp;
        }
       }
       printResult(i+1,array);
      }
     }
     
     //显示第i趟排序的结果
     public static void printResult(int times,int[]array)
     {
      System.out.print("第"+times+"趟排序:");
      for(int i=0;i<array.length;i++)
       System.out.print(array[i]+" ");
      System.out.println();
     }
     
     public static void main(String[]args)
     {
      int[] array = {4,7,5,3,9,0};
      BubbleSort.bubbleSort(array);
     }
    }

    结果如下:

    第1趟排序:4 5 3 7 0 9
    第2趟排序:4 3 5 0 7 9
    第3趟排序:3 4 0 5 7 9
    第4趟排序:3 0 4 5 7 9
    第5趟排序:0 3 4 5 7 9

    从以上打印结果可以看出,第1趟排序把最大数据9下沉到最后一位,第2趟排序把第二大数据7下沉到倒数第二位,第3趟排序把第三大数据5下沉到倒数第三位,可以此类推,第i趟排序把第i大数据下沉到倒数第i位。外循环需n-1趟。

    假定数组有n位,外循环次数为n-1,对于第i次外循环,其内循环次数为n-i-1。因此,

    总的循环次数为:(n-i-1)(i从0到n-2),为n(n-1)/2,故冒泡排序的时间复杂度为O(n^2)。

    OK!Go to sleep .

  • 相关阅读:
    SQL获得表的行数
    sql server2008用ip远程连接
    sql设置字段默认值
    用c# 实现设计器 DesignSurface<转>
    DSOFramer.ocx 控件使用<转>
    浅谈JavaScript编程语言的编码规范<转>
    主要是取得2個Collection 裏,相同、相異、聯集的部份<转>
    VS2008无法切换到视图设计器
    使用HttpModule来禁用Web表单重复提交<转>
    WebIM组件设计<转>
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333419.html
Copyright © 2011-2022 走看看