排序演算法-氣泡排序(Bubble Sort)

qingyezhu發表於2013-08-12
package com.wangzhu.sort;
/**
 * 氣泡排序演算法
* @ClassName: BubbleSort 
* @Description: TODO
* @author wangzhu
* @date 2013-8-12 上午10:37:28 
*
 */
public class BubbleSort {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] arr1 = new int[]{10,9,8,7,6,5,4,3,2,1};
        sort(arr1);
        int[] arr2 = new int[]{1,2,3,4,5,6,7,8,9,10};
        sort(arr2);
        int[] arr3 = new int[]{1,1,1,2,2,3,3,3,4,5};
        sort(arr3);
        int[] arr4 = new int[]{2,2,1,3,1,1,1,2,3,3,2};
        sort(arr4);
        int[] arr5 = new int[]{11,-9,-8,17,-6,51,14,31,42,51};
        sort(arr5);
        int[] arr6 = new int[]{-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
        sort(arr6);
        int[] arr7 = new int[]{-1,-1,-1,-2,-2,-3,-3,-3,-4,-5};
        sort(arr7);
        int[] arr8 = new int[]{2,2,1,2,3,4,5,6,8,9,10,10,10};
        sort(arr8);
        
    }

    /**
     * 氣泡排序:每次將最小的放在最前頭
     * @param arr
     */
    public static void sort(int[] arr){
        for(int i = 0 ,len = arr.length; i < len;i ++){
            boolean isSort = true;//記錄每一趟是否進行了交換,若是沒有,則說明數列已排好序
            //從最後面的元素開始進行,直到最前面的第二個未排序的元素
            for(int j = len - 1;j  > i; j--){
                //前面元素的大於後面的元素,則交換
                if(arr[j - 1] > arr[j]){
                    int temp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = temp;
                    isSort = false;
                }
            }
            if(isSort){
                break;
            }
        }
        show(arr);
    }

    private static void show(int[] arr) {
        for(int num:arr){
            System.out.print(" " + num);
        }
        System.out.println("===============");
    }
}

根據氣泡排序演算法的定義,簡單的實現了一下,僅供參考,若有不對,請指出,謝謝!

相關文章