日期:2014-05-20  浏览次数:20633 次

谁能给我很细致的解释一下下面的冒泡算法。。。新手救助!
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
------解决方案--------------------
引用:
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

记住这个法则就好了