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

原创 2013年12月05日 10:16:03

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

相关文章推荐

打包安装的一些准则之我见--欢迎拍砖欢迎补充

从做第一个打包程序到现在,陆陆续续也做了几十个安装包了,也帮助了不少朋友解决他们在制作 安装包过程中的问题,也得到了不少朋友们在安装包方面的指导。人之患在好为人师,我也不例外 ,看得多了也想说两句...
  • wdt3385
  • wdt3385
  • 2012年08月02日 11:24
  • 382

冒泡排序以及二分法查询

  • 2017年11月09日 23:15
  • 275B
  • 下载

Java中的冒泡排序算法实现

巴黎的告白气球 2017-01-12 11:49 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走...

冒泡排序VB版

  • 2015年03月28日 21:43
  • 27KB
  • 下载

vs2010 冒泡排序

  • 2015年05月10日 15:48
  • 1.09MB
  • 下载

利用Python实现冒泡排序

今天说一个比较简单易懂的算法,相信大家在大学里面肯定都有接触过。在这里介绍排序算法的一种冒泡排序,对于初学Python的新人来说因该很容易理解。...

二分查找算法和冒泡排序算法

  • 2015年04月22日 11:27
  • 942KB
  • 下载

奇偶冒泡排序

  • 2016年03月30日 22:08
  • 1KB
  • 下载

用PHP如何实现冒泡排序

1、首先我们必须弄清楚什么是冒泡排序,不理解冒泡排序的原理,我们就无法写出代码。 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序之我见,希望前辈们拍砖!
举报原因:
原因补充:

(最多只允许输入30个字)