CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

关于冒泡排序程序代码的一点困惑?

楼主kantia(45)2005-04-28 16:20:05 在 C/C++ / C++ 语言 提问

template<class   T>  
  void   bubblesort(T   data[],int   n){  
  for(int   i=0;i<n-1;i++)  
      for(int   j=n-1;j>i;--j)  
            if(data[j]<data[j-1])  
                swap(data[j],data[j-1]);//swap将元素data[j],data[j-1]进行交换。  
  }  
   
  请问一下在这段代码里面for(int   j=n-1;j>i;--j)这个地方为什么要用--j,如果用j--会有区别?  
  谢谢!! 问题点数:20、回复次数:12Top

1 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2005-04-28 16:24:22 得分 0

試一下 就指導了呀。。  
   
  這種情況下 沒有 區別。Top

2 楼useresu(俗人)(灌水是我无言的抗议)回复于 2005-04-28 16:25:48 得分 0

在此没区别,  
  但是--j和j--还是有区别的.  
   
  int   i   =   0;  
  int   j   =   3;  
  i   =   j--;//则i=   3;  
  如果i   =   --j;则i   =   2;Top

3 楼useresu(俗人)(灌水是我无言的抗议)回复于 2005-04-28 16:34:00 得分 0

++a是先修改操作数使之成为表达式的值  
  a++是先将操作数做为表达式的值,再++  
  但在此没区别Top

4 楼power77()回复于 2005-04-28 16:51:38 得分 20

--j的效率比j--要高。  
   
  你重载一下前缀和后缀increment,decrement就知道了,后缀实现必须引入一个临时变量  
  //   前缀形式:增加然后取回值  
  UPInt&   UPInt::operator++()  
  {  
  *this   +=   1;   //   增加  
  return   *this;   //   取回值  
  }  
  //   postfix   form:   fetch   and   increment  
  const   UPInt   UPInt::operator++(int)  
  {  
  UPInt   oldValue   =   *this;   //   取回值  
  ++(*this);   //   增加  
  return   oldValue;   //   返回被取回的值  
  }Top

5 楼lsrj(小孬)回复于 2005-04-28 19:37:32 得分 0

好像在for语句里,j--与--j在所要达到效果来看没有区别!当然只看j--与--j肯定有区别Top

6 楼fireflyc(萤火虫)回复于 2005-04-28 19:42:30 得分 0

在这里是没区别的。  
  Top

7 楼jipuy(C)回复于 2005-04-28 20:21:42 得分 0

回复人:   useresu(俗人)   (   )   信誉:100     2005-04-28   16:25:00     得分:   0      
     
     
        在此没区别,  
  但是--j和j--还是有区别的.  
   
  int   i   =   0;  
  int   j   =   3;  
  i   =   j--;//则i=   3;  
  如果i   =   --j;则i   =   2;  
     
      赋值了就有区别;  
          没赋值就没区别;    
  Top

8 楼zhangsong1238(C++ fans)回复于 2005-04-28 21:51:27 得分 0

这个问题我看了一些书上写的,但是两种写法都有的,当是就感到有点迷糊的,真像power77()   说的一样有效率上的区别吗?Top

9 楼WingForce(初六,履霜,坚冰至。)回复于 2005-04-28 22:02:07 得分 0

?    
  这个问题我看了一些书上写的,但是两种写法都有的,当是就感到有点迷糊的,真像power77()   说的一样有效率上的区别吗?  
  ==================================================================  
  据说是有效率上的区别  
  不过,实际上,我敢打包票,你120%感觉不到任何的效率上的区别Top

10 楼plovej(把自己变为挣钱的机器)回复于 2005-04-28 22:08:00 得分 0

对啊,在此出是没什么区别啊,至于效率吗,有是有,但是  
  在这个问题上是感觉不出来的!Top

11 楼maleo(走向地狱)回复于 2005-04-28 22:28:23 得分 0

j--和--j独立存在的时候除了--j要快些以外是没有什么区别的  
  但是当二者参与了运算的时候,就有区别了Top

12 楼kantia(45)回复于 2005-04-29 14:44:22 得分 0

++a是先修改操作数使之成为表达式的值  
  a++是先将操作数做为表达式的值,再++。  
  其实这个我也知道,但在for循环里面好象就有点困惑。  
  在for循环里面既然j--和--j相同,为什么要用--j呢?  
   
  感觉power77()   说的有道理!!Top

相关问题

  • 冒泡排序!
  • 冒泡排序法
  • 能给我一个n个数字的冒泡排序的源代码吗?在线等待,急!!!马上给分!
  • 请教:我写的链表冒泡排序为什么不能成功(附代码)
  • 冒泡排序,但怎么没排成??
  • 冒泡排序,我的为何不对?
  • 一段冒泡排序,帮我看看
  • 想问一下,数组中的排序,比如冒泡排序,插入排序,快速排序。。。
  • 请问冒泡法排序的最佳算法~~~waiting..................
  • "冒泡排序"这个名字做何解释啊?

关键词

  • 有效率
  • 区别
  • upint
  • 操作数
  • 取回
  • 值
  • 表达式的值
  • 效率
  • power77
  • 增加

得分解答快速导航

  • 帖主:kantia
  • power77

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo