A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马毅 中级黑马   /  2012-12-11 21:14  /  1803 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Mayi 于 2012-12-11 21:53 编辑

上一篇帖子介绍了选择排序算法,这篇帖子介绍和其灰常类似的一个算法――冒泡算法(BubbleSort)
 

冒泡算法是比较相邻的两个元素,按照排序方向交换两个元素的位置,每次将一个元素沉到最后,以达到排序的目的

以下是实现代码:
  1.     int temp;
  2.             for (int i = 0; i < ary.Length;i++ )
  3.             {
  4.                 for (int j = 0; j < ary.Length -1-i;j++ )
  5.                 {
  6.                     if(ary[j] > ary[j+1])
  7.                     {
  8.                         temp = ary[j+1];
  9.                         ary[j + 1] = ary[j];
  10.                         ary[j] = temp;
  11.                     }
  12.                 }
  13.             }
复制代码
选择排序 和 冒泡排序都是通过多次迭代来达到排序的目的,效率不高,习惯称之为蛮力法

列表帖子http://bbs.itheima.com/thread-33497-1-1.html

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
你的里层循环条件应该是j < ary.Length -1-i ,这样才是标准的冒泡。冒泡排序主要思想就是两层循环,最重要的一个就是里层循环的条件, 即j < ary.Length -1为什么两层循环,是按照一个规律比如说十个数是9,8,7,6,5,4,3,2,1,0第一趟比较第一个数比较9次,第二趟比较第一个数比较8次,第三趟比较第一个数比较7次,根据这个规律推出来的里层循环条件即j < ary.Length -1-i。这个只是规律,但是如果这个条件变成 j < ary.Length-1答案也对,但是就是多做了好多次无效比较。 那个第几趟就是外层的循环条件。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
邵帅 发表于 2012-12-11 21:31
你的里层循环条件应该是j < ary.Length -1-i ,这样才是标准的冒泡。冒泡排序主要思想就是两层循环,最重要 ...

正解,粗心了~~
回复 使用道具 举报
冒泡排序从大到小的排序,第二个for循环用小于号,从小到大的排序,第二个for循环用大于号。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马