C小加

厚德 博学 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

3种交换变量值的方法

Posted on 2012-03-07 22:03 C小加 阅读(1312) 评论(3)  编辑 收藏 引用 所属分类: C++和面向对象

//中间变量法
void swap1(int& a,int& b)
{
    int temp=a;
    a=b;
    b=temp;
}
//相互加减法
void swap2(int& a,int& b)
{
    a=a+b;//可能会溢出
    b=a-b;
    a=a-b;
}
//异或法
void swap3(int& a,int& b)
{
    a^=b;
    b^=a;
    a^=b;
}

Feedback

# re: 3种交换变量值的方法  回复  更多评论   

2012-03-08 12:51 by 远行
第二种和第三种都有bug,比如不小心就会用同一个变量去交换,结果是这个变量置0了。

# re: 3种交换变量值的方法  回复  更多评论   

2012-03-08 14:16 by 春秋十二月
void swap3(int& a,int& b)
{
if (a^b)
a^=b,b^=a,a^=b;
}

# re: 3种交换变量值的方法  回复  更多评论   

2012-03-08 14:41 by C小加
这样效率是不是要低啊?@春秋十二月

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理