Java:排序 - 冒泡
阿新 • • 發佈:2018-12-13
對於n個數的陣列升序排序,冒泡最多遍歷n-1次。
第一次遍歷下標0到n-1,將每次訪問的下標m和m+1的值比較,前者大則雙方互換位置,遍歷後使得下標n-1一定是最大值。
第m次遍歷下標0到n-m-1,使得下標n-m-1到n-1是升序的。
直到每次不發生交換,則排序完成。
對於n個數的陣列降序排序,…,m小則互換位置,…直到不發生交換,完成
氣泡排序法,時間複雜度為n2, 空間複雜度為1,排序後相同元素位置不變,屬於穩定排序。
public static boolean sortArr(int[] arr){
boolean swap;
for (int i=arr.length-1;i>0;i--){
swap = false;
for (int j=0;j<i;j++){
if(arr[j] > arr[j+1]){
int tmp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tmp;
swap = true;
}
}
if (!swap){
return true;
}
}
return true;
}
測試
int[] arr1 = {6,4,4,3,1};
sortArr(arr1);
System.out.println(Arrays.toString(arr1));
輸出
[1, 3, 4, 4, 6]