排序算法之冒泡排序的思想以及Java实现

1 基本思想
设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称它为一趟冒泡。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序序列减少一个元素,每趟冒泡的结果把序列中最小的元素放到了序列的”最前面”。

2,算法的实现(Java)

package Algorithm;

public class BubleSort {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};
        System.out.println("排序之前:");
        BubleSort.output(data);
        System.out.println();
        System.out.println("排序之后:");
        BubleSort.buble_sort(data);
        BubleSort.output(data);
    }

    public static void buble_sort(int[] arr){

        for(int i=0;i < arr.length-1;i++){
            for(int j =0; j < arr.length-i-1;j++){
                if(arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }

    //输出打印
    public static void output(int[] arr){
        for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+"	");
            }
        }


}

得到的结果为:
这里写图片描述


3,性能分析

冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1),它是一种稳定的排序算法。

原文地址:https://www.cnblogs.com/bjgua/p/6907661.html