舉個例子:int[] array = {2,4,9,7,6,5};
第一輪2和4進行比較,2<4,位置不變。再4和9進行比較,4<9,位置不變。再9和7進行比較,9>7,9和7的位置互換。再9和6進行比較,9>6,9和6的位置互換。再9和5進行比較,9>5,位置互換。第一輪比較的結果就是2 4 7 6 5 9。
第二輪2和4進行比較,2<4,位置不變。再4和7進行比較,4<7,位置不變。再7和5進行比較,7>6,7和6的位置互換。再7和5進行比較,7>5,7和5的位置互換。第二輪的結果就是2 4 6 5 7 9。
第三輪2和4進行比較,2<4,位置不變。再4和6進行比較,4<6,位置不變。再6和5進行比較,6>5,6和5的位置互換。第三輪的結果是2 4 5 6 7 9(已經是我們想要的結果了)。
代碼如下:
package com.test;
public class BubbleSortTest
{
public static void main(String[] args)
{
int[] array = {2,4,9,7,6,5};
BubbleSortTest bst = new BubbleSortTest();
bst.bubbleSort(array);
}
public int[] bubbleSort(int[] array)
{
for(int i=0;i<array.length-1;i++)
{
boolean bl = true;
for(int j=0;j<array.length-1-i;j++)
{
if(array[j] > array[j+1])
{
bl = false;
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
//如果當輪沒有發生位置變化,說明已經排序完畢,就沒有必要再進行判斷了
if(bl)
{
break;
}
/*--觀看結果的代碼,可以忽略---------------------*/
System.out.println("第" + (i + 1) + "趟排序");
for(int k = 0; k < array.length; k++)
{
System.out.print(array[k] + " ");
}
System.out.println();
/*-------------------------------------*/
}
return array;
}
}