排序算法之冒泡排序

 冒泡排序(Bubble sort)是一种基本的排序算法.它重复的访问要排序的数列,一次比较两个元素,如果

     不符合既定的大小关系则交换位置。上述过程是重复进行的,直到没有再能够进行交换的为止(排序

     完成)。其特点是越小的元素会经由交换“浮”到数列顶端。

            冒泡排序一般的运作过程如下:

                1、比较相邻的元素。根据大小关系确定是否交换其位置。

                2、对每一对相邻的元素做同样的工作,知道结尾的一对,这一趟下来最后的元素就应该是

                       最大或最小的了(升序、降序)。

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

                4、持续每次对越来越少的元素序列重复上述的步骤,知道没有任何一对元素需要不满足大小关系

                      为止。

       其特点可以观察一份动态图,便于理解:

                         排序算法之冒泡排序_第1张图片

                    其排序结果是升序的。每一趟都有较小元素往上“冒”出去,这也是冒泡排序名字的由来。

                    下面看代码实现,较为简单(java版):                

[java]  view plain copy print ?
  1. package com.kiritor;  
  2.   
  3. import java.util.Arrays;  
  4.   
  5. /** 
  6.  * 冒泡排序的简单实现 
  7.  * 时间复杂度为  O(N^2)  
  8.  * @author Kiritor 
  9.  */  
  10. public class Sort<T> {  
  11.     public static  <T extends Comparable<? super T>>   
  12.     T[] bubbleSort(T[] t) {  
  13.        for(int i=0;i<t.length-1;i++)  
  14.        {  
  15.            for(int j=0;j<t.length-i-1;j++)  
  16.            {  
  17.                T tmp;  
  18.                if(t[j].compareTo(t[j+1])>0)  
  19.                {  
  20.                    tmp = t[j];  
  21.                    t[j]=t[j+1];  
  22.                    t[j+1]= tmp;  
  23.                      
  24.                }  
  25.            }  
  26.            System.out.println(Arrays.toString(t));  
  27.        }  
  28.        return t;  
  29.     }  
  30.       
  31.     public static void main(String[] args) {  
  32.         Integer[] integer ={12,1,423,123,6,5,10,8};  
  33.         System.out.println(Arrays.toString(bubbleSort(integer)));  
  34.     }  
  35. }  
            输出情况如下:

                 排序算法之冒泡排序_第2张图片

             其中第二行中,6和123,之后5和123交换......这一过程也就是较小元素“冒泡”的过程。

你可能感兴趣的:(排序算法之冒泡排序)