需要注意新建的函数名不能为swap,因为C++自带的两个整数转换的函数就为swap,因此需要换一个名字。
观察上图,若swap()函数代码如下👇,则意味着swap函数开辟了新内存地址,利用新的变量来存储这两个值。因此,只是在swap函数中交换m与n的值,在函数外面的main()主函数的m和n还是老样子。也就是说此m、n非彼m、n,因为内存地址不同。
void swap(int m, int n){
int temp = m;
m = n;
n = temp;
}
但是如果在函数参数前面加上了引用符号(&),那就代表将这个地址送入函数中,而不是变量的值拷贝过去,这样我们对于变量的修改是会影响到传入函数中的变量的,因此对上述代码改进一下即可实现交换。如下👇
void swap(int &m, int &n){
int temp = m;
m = n;
n = temp;
}
完整代码:
#include <iostream>
using namespace std;
void swap1(int &m ,int &n){
int temp = m;
m = n;
n = temp;
}
int main() {
int m, n;
cin >> m;
cin >> n;
swap1(m, n);
cout << m << " " << n << endl;
return 0;
}
时间复杂度:需要进行常数次操作,所以时间复杂度为O(1)。
空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)。