黑马程序员—Java—冒泡

来源:互联网 发布:阿里妈妈淘宝客违规 编辑:程序博客网 时间:2024/04/29 22:45
-------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!--------------------------
代码:
public class Test209{ static final int N=5; public static void main(String[]args){ int []a=new int[]{30,1,-9,70,25}; for(int i=0;i<N-1;i++) {                        for(int j=0;j<N-1-i;j++)if(a[j]>a[j+1]){ int t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } for(int i=0;i<N;i++) System.out.print(a[i]+" "); System.out.println(); } }


 这才是真正的冒泡排序,以前我也不是太懂的,最关心的是不是for(int i=0;i<N-1;i++) 
for(int j=0;j<N-1-i;j++) 这两句啊,这是用二重循环为实现的,外循环变量设为i,内循环变量设为j,第一句是进行了几轮排序,第二句是每一轮分多少次给它排完。我给你解释一下吧!它共进行了4轮循环,所以它的外循环是i<N-1;即进行了4轮,而它每轮进行的次数是递减的,所以内循环是j<N-1-i: 第一轮:1 30 -9 70 25 1 -9 30 70 25 1 -9 30 70 25 1 -9 30 25 70 这是4次 第二轮:1 -9 30 25 70 -9 1 30 25 70 这是3 次 -9 1 30 25 70 第三轮: -9 1 30 25 70 这是2次 -9 1 25 30 70 第四轮:-9 1 25 30 70 这是1次 冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将大数放前,小数放后,一直比较到最小数前的一对相邻数,将大数放前,小数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。 而你进行的是从小到大排序,把小数放在前面就行了!

--------------------------ASP.Net+Unity开发、 .Net培训、期待与您交流!-----------------------

详情请查看:http://edu.csdn.net


0 0
原创粉丝点击