您的位置:首页 > 其它

冒泡排序

2011-04-02 03:07 204 查看
最近突然想研究下算法。嗯,最简单的应该是冒泡排序(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 .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: