氣泡排序--java實現
阿新 • • 發佈:2020-09-18
程式碼
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
如有錯誤,歡迎指正。