黑马程序员技术交流社区

标题: 冒泡排序问题 [打印本页]

作者: mingjixiaohui    时间: 2014-6-5 20:58
标题: 冒泡排序问题
本帖最后由 mingjixiaohui 于 2014-6-7 18:58 编辑
  1. void sort(){int i,j,temp;
  2. for(i=0;i<=n-1;i++)//循环次数
  3. {for(j=1;j<=n-i-1;j++)//这里的j<=n-i-1是什么意思啊
  4. if(r[j]>r[j+1]){
  5. temp=r[j];
  6. r[j]=r[j+1];
  7. r[j+1]=temp;
  8. }
  9. }
  10. }
复制代码



作者: 为梦想挺身而出    时间: 2014-6-5 21:46
汗,你从哪复制过来的,你这发出来的只是半块小代码,发全了才好判断,记住一点 第一个数与第二个数相比较,如果第一个数比第二个数大,就与第二个数互换,以此类推, 最后 输出从大到小还是从小到大,用顺序或逆序即可
作者: xp8812    时间: 2014-6-5 21:48
本帖最后由 xp8812 于 2014-6-5 21:49 编辑

兄弟你的代码有两处错误,第一个是第3行的j=1应该是j=0否者第一个数字不会参与排序,第二个错误还是第3行j=1后面的符号应该是分号(;)而不是逗号(,)。j<=n-i-1通过判读当前数后面还有几个数,从而控制当前循环的次数
作者: 夏沫的黄昏′    时间: 2014-6-5 22:21
j<n-i-1 是为了避免没必要的运算  因为 后面的运算重复 你模拟下冒泡的结构 看看就明白了
作者: 傘が咲く    时间: 2014-6-6 08:39
代码插入规范

关于发表帖子时插入代码的规范
http://bbs.itheima.com/thread-116527-1-1.html
(出处: 黑马程序员IT技术论坛)

谢谢合作:handshake
作者: 魑魅魍魉121    时间: 2014-6-6 08:49
冒泡排序需要进行两次循环,一次外循环是遍历所有的要排序的数,一次内循环是遍历所有未排序的数所以j<=n-i-1.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2