谁能给我很细致的解释一下下面的冒泡算法。。。新手救助!
public void sort(int[]array){
for(int i = 1;i<array.length;i++){
for(int j = 0;j<array.length-i;j++){
if(array[j]>array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
求高手给我细致细致很细致解释一下上面的代码,主要是两个for循环,希望里面的每一项都能解释一下,看得快哭了呀。。。能结合实例再分析一下代码就更好了,谢谢了!
------解决方案--------------------不用解释,教你个办法
public void sort(int[]array){
for(int i = 1;i<array.length;i++){
for(int j = 0;j<array.length-i;j++){
if(array[j]>array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
在这里添加代码,将每趟排序后的数组输出出来
}
}
然后你就明白了。
------解决方案--------------------主要是循环你看不明白乱了,建议你去google看看这个算法的流程图,然后结合到你的代码,很快你就会明白的,还有其他的排序算法都是可以用同样的方法理解,
------解决方案--------------------冒泡排序算法的运作如下:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
由于它的简洁,冒泡排序通常被用来对于程式设计入门的学生介绍算法的概念。
谷歌上贴来的!
------解决方案--------------------http://sjjg.js.zwu.edu.cn/SFXX/sf1/mppx.html
------解决方案--------------------
网上找个演示动画。。
------解决方案--------------------先看图解把原理弄懂,就一目了然了,如果没懂原理的情况下只看代码,大部人都是一片茫然,原理的资料,很容易找,上面版主的那个视频就很不错
------解决方案--------------------public class ForDemo {
public static void main(String args[]){
for(int i=1;i<4;i++){ 外循环控制的是行数
for(int j=0;j<4;j++){ 内循环控制的是每行的个数
System.out.print("*");
}
System.out.println();
}
}
}
比如length=4,外循环开始i=1 内循环开始,j=0~~~j=3 内循环结束(到这算一次)
外循环开始i=2~~~~~~~~~~~~~~~
一直这样循环到i=3,i<arr.length,i++ 因为length=4, 所以循环到此结束
输出结果为:
****
****
****
------解决方案--------------------记得那老师教的是:外层循环n-1,内层循环n-1-i
记住这个法则就好了