在学习了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);
}
}
如今看来,对于每个问题都有着不同的方法,而追求效率绝对是永恒不变的课题。