1. 程式人生 > 實用技巧 >氣泡排序--java實現

氣泡排序--java實現

程式碼

public int[] sort(int[] nums){
        int n=nums.length;
        int tmp;
        boolean flag=false;
        do{
            for (int i=0;i<n;i++)
            {
                flag=false;
                for (int j=0;j<n-i-1;j++)
                {
                    if (nums[j]>nums[j+1]){
                        tmp=nums[j+1];
                        nums[j+1]=nums[j];
                        nums[j]=tmp;
                        flag=true;
                    }
                }
            }
        }
        while (flag);
        return nums;
    }

原理

氣泡排序最核心的就是兩個元素互換。舉個例子(從小到大排序),直接說極端情況,數組裡存了[7,6,5,4,3,2,1],泡泡從開始處產生,經過交換後,他會到最後一個位置,顯然,每生成一個泡泡,陣列的末尾必定會有序起來。具體要迴圈幾次就要看什麼時候整個陣列有序,這裡設定一個布林標誌位flag,也就是說如果在一輪迴圈中沒有進入交換那個迴圈的話,就結束這個排序。

複雜度

時間複雜度O(n^2)
內迴圈其實就是個等差數列,即1-n的和等於n(n-1)/2。所以時間複雜度是n^2
空間複雜度O(1)
申請了幾個可數的變數,空間複雜度為1

如有錯誤,歡迎指正。