冒泡排序是一门艺术,一般人刚刚接触到他的时候,根本无从下手。不少人(包括我)大学毕业了找工作,面试官问:你解释一下冒泡算法,直接就歇菜了。
首先我们从字面上来看,冒泡,像泡泡一样冒出来,还是不懂啊。不看代码,我还真讲不通,我先把代码搞上来,咱们对着代码讲。
public static void main(String[] args) { int[] array={4,3,2,1}; int count=0; for(int i=0;i<array.length;i++){ //外循环 for(int j=i+1;j<array.length;j++){ //内循环 count++; if(array[i]>array[j]){ int first=i; //下面三行代码:first位置的数和j位置的数换个位置 int temp=array[first]; array[first]=array[j]; array[j]=temp; printArray(i,j,array); //打印数组 } } } System.out.println("一共执行了:"+count+"次!!"); } private static void printArray(int i,int j,int[] array){ System.out.print("i="+i+",j="+j+",array="); for(int k:array){ System.out.print(k+" "); } System.out.println(); }
执行的结果:
i=0,j=1,array=3 4 2 1 i=0,j=2,array=2 4 3 1 i=0,j=3,array=1 4 3 2 i=1,j=2,array=1 3 4 2 i=1,j=3,array=1 2 4 3 i=2,j=3,array=1 2 3 4 一共执行了:6次!!
我草,这不一目了然了?我们看运行的结果:
1、看前面三行,i的值是0,j的值从1涨到3,我们成功得将数组变成了:1 4 3 2,也就是说,里边的for循环走一遍,就把最小的数给搞到前面啦!
2、再看第4、5行,i的值是1,j从2到3,我们的数组变成了:1 2 4 3,意思是:我们把第二小的数放到了第二位!
3、当执行到最后一次的时候,我们把第三小的数放到了第三位。
总结一下:冒泡算法就是2个for循环,对于外循环,第几次外循环就能把数组第几小的数放到第几位,所以一共要进行n-1次的外循环才能将数组排序。 对于内循环,每次都把当前的第一个数(array[i]) 和后面的每一个数(array[j]) 比较,谁小谁就放在第一个!
于是,我们得到的结论是:冒泡算法是这样的:包括2个循环,内循环将最小值放前面(内有交互值方法),外循环就是(for i=0;i<length;i++)
你们还有更好的解释吗?求留言赐教,谢谢大家····
相关推荐
冒泡排序详解,简单而详细的讲清楚了,什么是冒泡排序。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首...
java冒泡排序代码,亲测能用,控制台输入数据,自动排序
java 冒泡排序方法,java 冒泡排序方法。
java 冒泡排序法 PPT文档java 冒泡排序法 PPT文档java 冒泡排序法 PPT文档java 冒泡排序法 PPT文档
java冒泡排序集锦方法!所有的方法都有!很不错的!希望对大家有帮助哈哈!
java 冒泡排序法 java 冒泡排序法
用java 编写的冒泡排序算法,并涵盖了冒泡排序算法的几种优化方式,以及在冒泡排序上的二分查找法。
//测试冒泡排序 /********************* * int[] num = {23,45,76,78,98,54,}; 第一次 23 45 76 78 54 98 第二次 23 45 76 54 78 98 第三次 23 45 54 76 78 98 输出 :23 45 54 76 78 98 当判断为正确时就退出...
从老师那弄的JAVA冒泡排序的一个讲解,不明白的可以好好看看哈
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
冒泡排序的详细讲解冒泡排序的详细讲解冒泡排序的详细讲解冒泡排序的详细讲解
这个程序根据冒泡排序从大到小,从小到大的把数组里的元素进行了排序,程序思想很清晰
JAVA冒泡排序和快速排序算法,符合实验报告要求哦
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...
java实现的冒泡排序 很简单一看就懂
Java语言实现的冒泡排序算法,代码里头有详细注释,注释皆为简单英文,这个算法比较经典,欢迎新手下载学习使用,欢迎后期的学习交流!
java冒泡排序 代码为排序源代码 简洁明了 无其他
冒泡排序原理和JAVA实现,冒泡排序原理和JAVA实现
可以用java来得到冒泡排序的实现,由屏幕输入存入数组。
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至...