比較相鄰的元素,若是前一個比後一個大,交換之。
第一趟排序第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; }