冒泡排序

冒泡排序( Bubble Sort) 一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。

图1 冒泡排序

冒泡排序流程如图1所示:
假设有一个无序序列 {1, 4 , 6, 0, 3, 2, 5, 9}
从9开始两两比较,数字较小的上浮。
第一轮:2比3小,2上浮;0比前面的数字都小,上浮到第一位;
第二轮:2比6,4小,上浮到4的上方;
第三轮:3上浮到4上方;
第四轮:5上浮到6上方。
代码实现:

//冒泡排序
private static int[] bubbleSort(int[] a) {
    for(int i=0; ii; j--) {
            int temp;
            if(a[j]

输出结果:
Bubble sort:
0, 1, 2, 3, 4, 5, 6, 9,

优化:

这样的冒泡排序并非最优。举个例子,对于无序数组{1,2,3,4,5,0}, 只需要一轮冒泡排序就可以得到从小到大的数组。如果按照上述的代码,需要执行n轮比较。其实除了第一轮比较是有用的,其他的比较都多余。因此我们可以加一个flag来实现对算法改进。

private  static  boolean flag;
//冒泡排序
private static int[] bubbleSort(int[] a) {
    for(int i=0; ii; j--) {
            int temp;
            if(a[j]

冒泡排序的时间复杂度O(n^2)

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