冒泡排序

public class BubbleSortDemo {

    public static void bubbleSort(int[] a) {
        //一次遍历,长度a.length - 1,主要是第一个最终没影响
        for (int i = 1; i <= a.length - 1; i++) {
            for (int j = 0; j < a.length - i; j++) {
                if (a[j] > a[j + 1]) {
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] a = {14, 65, 25, 22, 1, 4, 78, 36, 50};
        bubbleSort(a);
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
    }
}
  • 但算法可以改进,使最佳情况时为O(n)。改进后的代码为:
public void bubbleSort(int arr[]) {
    boolean didSwap;
    for(int i = 0, len = arr.length; i < len - 1; i++) {
        didSwap = false;
        for(int j = 0; j < len - i - 1; j++) {
            if(arr[j + 1] < arr[j]) {
                swap(arr, j, j + 1);
                didSwap = true;
            }
        }
        if(didSwap == false)
            return;
    }    
}
posted @ 2018-11-17 10:10  _sanjun  阅读(101)  评论(0编辑  收藏  举报