冒泡排序可以说是入门数据结构与算法比较简单的一种排序方法
冒泡排序不破坏源数据的顺序,具有不变性的特点
效率:
N个数字,进行N+(N-1)+...0次比较
效率较低,O(N*N)
下面给出冒泡排序的java源码
package com.struc.arithmetic;
/**
* @author 鲁志明 E-mail: 13688601037@139.com
* @version 创建时间:2013-5-18 下午8:44:07
* 冒泡算法详解
*/
public class BubbleArithmeticDemo {
//升序 - 先找到最大的 - 大数向后走
public static void sortAsc(int[] array)
{
int outerLength = array.length;
//比较的次数 有N个比较N-1次就能找出最大的那个
for(int number = 0 ; number < outerLength - 1 ; number ++)
{
/**
* 每一趟都拿数组左边的第一个数和与其相邻的数进行比较
* 因为是升序排序,所以每一次都是找到没有排过序的最大的数字
* 找到一个最大的数字之后,下一趟比较就不需要在比较这个最大的数字了
* 所以eachTripNumber < outerLength - number -1 ,因为每找到一个最大的数字,number就++
*
*/
for(int eachTripNumber= 0 ; eachTripNumber < outerLength - number -1 ;eachTripNumber++)
{
/**
* 升序排序
* 前者>后者
* 位置互换
*/
if(array[eachTripNumber] > array[eachTripNumber+1] )
{
int temInt = array[eachTripNumber];
array[eachTripNumber] = array[eachTripNumber+1];
array[eachTripNumber+1] = temInt;
}
}
}
}
public static void main(String[] args) {
int[] demoIntArray = new int[]{2,1,4,7,3,9,8};
sortAsc(demoIntArray);
for(int tem: demoIntArray)
{
System.out.println(tem);
}
}
}