/*- ========================================================== * 文件名 :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型是一致的 } } }