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

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

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

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

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

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

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

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

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

                      为止。

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

                        

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

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

package com.kiritor;  import java.util.Arrays;  /**  * 冒泡排序的简单实现  * 时间复杂度为  O(N^2)   * @author Kiritor  */ public class Sort<T> { 	public static  <T extends Comparable<? super T>>  	T[] bubbleSort(T[] t) {        for(int i=0;i<t.length-1;i++)        {     	   for(int j=0;j<t.length-i-1;j++)     	   {     		   T tmp;     		   if(t[j].compareTo(t[j+1])>0)     		   {     			   tmp = t[j];     			   t[j]=t[j+1];     			   t[j+1]= tmp;     			        		   }     	   }     	   System.out.println(Arrays.toString(t));        }        return t; 	} 	 	public static void main(String[] args) { 		Integer[] integer ={12,1,423,123,6,5,10,8}; 		System.out.println(Arrays.toString(bubbleSort(integer))); 	} } 
            输出情况如下:

                

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