/*- ========================================================== * 文件名 :YPR_BubbleSort.java * 開發人員:袁培榮 CK0904班 學號:U200911171 * 當前版本:1.0.0.2595 * 建立時間:2012-03-09 * 修改時間:2012-03-09 * 功能說明:《JAVA程序設計基礎》實驗四 冒泡排序 * 版權說明:版權全部 袁培榮 YuanPeirong * 編譯環境:Windows 7(x64) SP1 簡體中文專業版 * JDK版本: JDK 7U3-B05(Windows-x64) - ==========================================================*/ /*- ========================================================== 冒泡排序(BubbleSort)的基本概念是: 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。 即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。 而後比較第2個數和第3個數,將小數放前,大數放後, 如此繼續,直至比較最後兩個數,將小數放前,大數放後。 至此第一趟結束,將最大的數放到了最後。 在第二趟:仍從第一對數開始比較 (由於可能因爲第2個數和第3個數的交換,使得第1個數再也不小於第2個數), 將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已是最大的), 第二趟結束,在倒數第二的位置上獲得一個新的最大數(其實在整個數列中是第二大的數)。 如此下去,重複以上過程,直至最終完成排序。 - ==========================================================*/ import java.io.*; public class YPR_BubbleSort { public static void main(String args [ ]) { int myArray[]={5,1,4,7,6,9,8,12,11}; System.out.println("這是一個冒泡排序的演示程序"); System.out.println("排序前"); m_PrintArray(myArray); m_BubbleSort(myArray); System.out.println("排序後"); m_PrintArray(myArray); } //對數組進行冒泡排序 public static void m_BubbleSort(int iArray[]) { //數組是引用類型,參數按地址傳遞 for(int i=1;i<iArray.length;i++) { //若數組長度爲n,則進行n-1趟排序 int exchangeCnt=0; //用於記錄每趟交換次數 for(int j=0;j<iArray.length-i;j++) { //j=0 to (n-i-1),(j+1)= 1 to (n-i) if(iArray[j]>iArray[j+1]) { int iTemp=iArray[j]; iArray[j]=iArray[j+1]; iArray[j+1]=iTemp; exchangeCnt++; } } if (exchangeCnt==0) //若是某趟交換次數爲0,說明已經排好序 {break;} //直接跳出排序過程,方法結束 } } //打印數組 public static void m_PrintArray(int iArray[]) { //數組是引用類型,參數按地址傳遞 for(int i=0;i<iArray.length;i++) { if(i==iArray.length-1) {System.out.print(iArray[i]+"\n");} //注意這裏"\n"不能寫成'\n' ,由於'\n'和int型用+鏈接時表明10 //由於char型和int型是一致的 else {System.out.print(iArray[i]+",");} //注意這裏","不能寫成',' ,由於','和int型用+鏈接時表明44 //由於char型和int型是一致的 } } }