关闭

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

594人阅读 评论(0) 收藏 举报

冒泡排序实在是太简单了,但是理解后简单,理解之前理解起来也挺痛苦的,痛苦在哪呢?例如我有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 而且。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8724次
    • 积分:189
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:1篇
    • 译文:1篇
    • 评论:4条
    文章分类
    最新评论