题目的主要信息:

  • 编写一个函数实现两个整数的交换
  • 要求使用引用实现

具体做法:

正常我们传到函数里面的值只是这两个变量的值,在函数的中运算跟这两个变量的没有关系,改动也不会影响到原来的变量,因为函数中新开辟地址利用新的变量来存储这两个值。因此,如下的代码:

void swap(int m, int n){ 
    int temp = m; 
    m = n;
    n = temp;
}

只能在swap函数中交换mmnn的值,在函数外面还是老样子。但是如果我们在函数参数前面加上了引用符号(&),那就代表将这个地址送入函数中,而不是变量的值拷贝过去,这样我们对于变量的修改是会影响到传入函数中的变量的,因此对上述代码改进一下即可实现交换。 alt

#include <iostream>
using namespace std;
void swap(int &m, int &n){ //交换两个整数的函数,用引用
    int temp = m; //交换两个数
    m = n;
    n = temp;
}
int main() {
	int m, n;
	cin >> m;
	cin >> n;
    swap(m, n); //函数交换
	cout << m << " " << n << endl;
	return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1),直接交换,无额外空间
  • 空间复杂度:O(1)O(1),常数级空间