泡沫排序法
泡沫排序法也分為兩堆數列,一個為排序好的,一個為每一次浮出水面的最大值,假如要由小到大排序這個序列
每一次都將相鄰的數字進行比較,若後面的比前面小則交換兩個數字位置,直到最大的數浮到陣列的最後方
2 3 1 4
- 從第一個數字開始,每一次都跟相鄰的數字進行比較
- 不斷比較直到比較到未排序好數列最後一個數字
- 若比較的兩數字前面比後面小,則交換
有底線的為排序好的數列
2 3 1 4 //2比3小,不交換
2 1 3 4 //1比3大,需交換
2 1 3 4 //3比4小,不交換,此時已到數列末端,於是4為已排序好數列
-
1 2 3 4 //2比1大,需交換
-
1 2 3 4 //2比3小,不交換,此時已到數列末端,於是3為已排序好數列
---
1 2 3 4 //1比2小,不交換,此時已到數列末端,於是2為已排序好數列
-----
1 2 3 4 //未排序數列只剩1,沒有可比較對象,於是1直接列入以排序好數列
-------
//PURPOSE:泡沫排序法,由小到大排序數列
int[] value={2,5,6,8,7,9,4,1,3};
for(int i=value.length-1;i>0;i--){
for(int j=0;j<i;j++){
//若前面的數比後面的大
if(value[j]>value[j+1]){
//交換此兩數
int z=value[j];
value[j]=value[j+1];
value[j+1]=z;
}
}
}
//列印出排序好後陣列裡的所有元素
for(int i:value){
System.out.print(i+" ");
}
------------------------
1 2 3 4 5 6 7 8 9