《JAVA程序設計基礎》實驗四 冒泡排序

/*- ==========================================================
*     文件名  :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型是一致的
        }
    }
}
相關文章
相關標籤/搜索