C++与java——浅谈两个数的交换问题

 

   在学习了C++后我所认为的排序,有几种方法。比如说,冒泡排序,选择排序,但是对于排序问题,还是没有自己可以拿来就用的方法。我于是想起了当时学习C++的那个代码:

#include<iostream>

using namespace std;

int main()

{

int a=1,b=2;

int c;

cout<<"Now,a="<<a<<"b="<<b<<endl;

c=a;

a=b;

b=c;

cout<<"Now,a="<<a<<"b="<<b<<endl;

return 0;

}结果应该如下:

Now,a=2

b=1

或者是用类模板的方法,大同小异。

我想,有没有其他的可以实现的方法呢?

可以。

#include<iostream>

using namespace std;

int main()

{

int a=1,b=2;

int c=a+b;

cout<<"Now,a="<<a<<"b="<<b<<endl;

a=c-b;

b=c-b;

cout<<"Now,a="<<a<<"b="<<b<<endl;

return 0;

}

但是,int类型有表示范围,a,b如果本身很大,那么a+b更大,很有可能溢出

今天学习java的时候,本来以为学到运算符时略过去,但是还是看了几眼。因为在计算机组成原理上的异或不是很清楚,所以又看了下

“异或:两者相同时为0,异时为1”但是java 给出了更深入的理解:“异或:一个数异或同一个数两次,结果还是他本身”

本来只是想法,结果上网查了下

早就有了更好的方法:

class Example

{

      public static void main(String[] args)

      {

      int a=1;

      int b=2;

  System.out.println("a="+a+"b="+b);

       a=a^b;

      b=a^b;

      a=a^b;

System.out.println("a="+a+"b="b);

      }

}

如今看来,对于每个问题都有着不同的方法,而追求效率绝对是永恒不变的课题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值