泡沫排序法


泡沫排序法也分為兩堆數列,一個為排序好的,一個為每一次浮出水面的最大值,假如要由小到大排序這個序列

每一次都將相鄰的數字進行比較,若後面的比前面小則交換兩個數字位置,直到最大的數浮到陣列的最後方

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

results matching ""

    No results matching ""