3 Java 冒泡排序法

冒泡排序( Bubble Sort)是一种简单的排序算法。它重复访问要数列, 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 法的名字由来是因为越小元素会经交换慢 “浮”到数列的 顶端,像水中到数列的 顶端,像水中气泡从水底浮到面。

public class BubbleSort {

    public static void main(String[] args) {
        int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
        bubbleSort(array);
        display(array);
    }

    /**
     * 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是一次比较两个元素,如果他们的顺序错误就把交换过来。
     * 访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 重复地进行直到没有再需要交换的数据,
     * 也就是说该列已经排序完成。这个算 重复地进行直到没有再需要交换的数据,也就是说该列已经排序完成。这个算 重复地进行直
     * 到没有再需要交换的数据,也就是说该列已经排序完成。这个算 法的名字由来是因为越小元素会经交换慢 “浮”到数列的 顶端,
     * 像水中到数列的 顶端,像水中气泡从水底浮到面。
     * @param array
     */
    public static void bubbleSort(int[] array) {
        int length = array.length;
        for (int i=0; i<length - 1; i++) {
            for (int j=0; j<length-1-i; j++) {
                if(array[j] > array[j+1]) {
                    swap(array, j, j+1);
                }
            }
            display(array);
            System.out.println();
        }
    }

    /**
     * 打印
     */
    public static void display(int[] array) {
        int len = array.length;
        StringBuilder str = new StringBuilder("");
        for (int i=0; i<len; i++) {
            str.append(array[i] + ", ");
        }
        System.out.println(str.substring(0, str.length()-2));
    }

    /**
     * 交换数组中两个元素的位置
     * @param array
     * @param a
     * @param b
     */
    private static void swap(int[] array, int a, int b) {
        array[a] = array[a] + array[b];
        array[b] = array[a] - array[b];
        array[a] = array[a] - array[b];
    }
}
View Code