公共英语三级怎么查询:怎么写一个函数swap(int a,int b)不用其他的辅助变量实现a,b的交换
来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 10:55:26
c语言和数据结构方面的问题 希望高手给我解决一下
我很着急 谢了
我很着急 谢了
数学法:(容易导致溢出,缺乏程序的健壮)
a = a + b;
b = a - b;
a = a - b;
逻辑法(不会有溢出的风险)
a = a ^ b;
b = a ^ b;
a = a ^ b;
指针法:(交换地址的方法应该是最节约的时间的,但需要额外的指针空间)
int* x=&a,y=&b;
x=&b;
y=&a;
直接法:(没有溢出风险,浪费了空间)
temp=a; a=b; b=temp;
当然后2条使用了中间变量,呵呵!
一般我们采用这种方法:
swap(int &a, int &b)
{
a = a + b;
b = a - b;
a = a - b;
}
但是逻辑法是最好的,避免了数据溢出,而且比较快捷
swap(int &a, int &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
如果不使用引用的话,就换做指针吧,一样的效果,执行效率也一样:
swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
不借助其他临时变量,怎么搞啊
简单:
a = a + b;
b = a - b;
a = a - b;
//实现
swap(int& a, int& b){
a = a + b;
b = a - b;
a = a - b;
}
用指针~~~
那也不能只用两个啊
不是自己找麻烦吗。。
这样的程序写出来只能增加阅读的困难。
怎么写一个函数swap(int a,int b)不用其他的辅助变量实现a,b的交换
编写函数fun3(int a[], int n, int b[]), 其中数组a有n个元素,
请编写函数void fun(int *a, int n, int y)
我想在java里用int[] a = new int[]{ }定义一个动态数组,可以请那位高手帮我写一个简单的例子吗?
C语言里面有swap这个保留函数吗?怎么用?
编写函数void fun(int *a,int *n,int y)它的功能是把y插入到a数组中使其次序不变
·编写函数void fun(int *a,int *n,int y)它的功能是把y插入到a数组中使其次序不变
INT 是什么函数
写一个主函数
swap语句怎么用啊?