冒泡排序之我见,希望前辈们拍砖!

冒泡排序实在是太简单了,但是理解后简单,理解之前理解起来也挺痛苦的,痛苦在哪呢?例如我有1、3、5、2、4这5个元素,会发生5-1=4次比较,于是乎得知n个元素会产生n-1次比较=。=以上,但是我看网上的代码的时候这个结论对我没什么帮助啊

public class BubbleSort{
  public  static  void  main(String args[]){
       int[] a={3,1,6,2,9,0,7,4,5};
       bubbleSort(a,a.length);
       for(int i=0;i<a.length;i++){   
            System.out.print(a[i]+" ");
       }
  }
  public  static  void  bubbleSort(int[] a,int n){
      int temp;
      for(int i = 1 ; i <= n-1 ; i++){
            for(int j = 0 ; j <= n - i - 1 ; j++){  //n代表元素个数,n-1代表最有一个元素的下标,两者的差一定为1,再减1得0
                  if (a[ j ] > a[ j + 1 ]) {                //所以j的右极限取值为数组导数第二个元素
                       temp = a[ j ];
                       a[ j ] = a[ j +1 ];
                       a[ j + 1 ] = temp;
                   }
            }
       }
  }
}

例如这段代码,我将边界都用了大于等于,小于等于,便于我自己理解

我不会将外层的循环理解成所谓的“进行n-1”次比较(尽管这是个结论,但这结论对于我这种菜鸟理解程序基本没什么帮助),而理解成外层的 i 的变化就是为了控制内层的 j 的变化,例如 i =1时,内层 j 可以移动到的最大范围为n-1,也就是数组最后一个元素,i=n-1时,j=n-(n-1)=1,也就是数组的第2个元素,这是极限情况,然后第2个元素再和第1个元素进行比较,冒泡结束,我本来就很菜再看网上云里雾里的就更懵了=。=前辈们我的理解对吗?就是外层 i 的变化纯粹就是为了控制内层 j 的移动范围从 1 到 n-1 而且。

阅读更多
想对作者说点什么? 我来说一句

C++心得参考

2012年05月16日 15KB 下载

微商怎么做

2014年08月04日 31KB 下载

没有更多推荐了,返回首页

不良信息举报

冒泡排序之我见,希望前辈们拍砖!

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭