冒泡排序

比較相鄰的元素,若是前一個比後一個大,交換之。
第一趟排序第1個和第2個一對,比較與交換,隨後第2個和第3個一對比較交換,這樣直到倒數第2個和最後1個,將最大的數移動到最後一位。
第二趟將第二大的數移動至倒數第二位
......
所以須要n-1趟;優化

public static int[] maopao(int[] arr) {
        int temp;//定義一個臨時變量
        for (int i = 0; i < arr.length - 1; i++) {//冒泡趟數
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j + 1] < arr[j]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
            System.out.println("冒泡::"+Arrays.toString(arr));
        }
        return arr;
}

時間複雜度:O(N2)
冒泡排序優化
能夠設置一個flag,用於判斷在一趟排序中若是沒有數據交換,則證實數據已經有序,結束排序。code

public static int[] maopaosort(int[] arr){

        int temp;
        int flag;
        for(int i=0;i<arr.length;i++){
            flag=0;
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j+1]<arr[j]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                    flag=1;
                }
            }
            if(flag==0)
                break;
        }
        return arr;
    }
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息