C++程序 交换两个数字
这里,我们将看到如何使用C++程序交换两个数字。以下是示例:
输入: a = 2,b = 3
输出: a = 3,b = 2
输入: a = 0,b = 1
输出: a = 1,b = 0
在C++中有8种交换两个数字的方法
- 使用第三个变量。
- 不使用第三个变量。
- 使用引用调用。
- 使用swap()函数。
- 使用位运算符。
- 使用友元函数。
- 使用算术运算符:*和/。
- 简短的方法
让我们开始讨论这些方法的每个细节。
1.使用第三个变量
这种方法的思路很简单:
- 将a赋值给一个临时变量:temp = a
- 将b赋值给a:a = b
- 将temp赋值给b:b = temp
以下是实现上述方法的C++程序:
输出
时间复杂度: O(1),因为只进行恒定的操作。
空间复杂度: O(1),因为没有使用额外的空间。
2.不使用第三个变量(使用+和-)
这里将使用以下方法:
- 将a和b的和赋值给b,即b = a + b。
- 将b和a的差赋值给a,即a = b – a。
- 将b和a的差赋值给b,即b = b – a。
以下是实现上述方法的C++程序:
输出
时间复杂度: O(1),因为只进行恒定的操作。
空间复杂度: O(1),因为没有使用额外的空间。
3.使用引用调用
这里将使用以下方法:
- 创建一个swap函数,该函数将使用第三个变量temp来交换两个数字,如方法1(使用第三个变量)所讨论的。
- 使用引用调用方法传递参数a和b来调用swap函数。
以下是实现上述方法的C++程序:
输出
时间复杂度: O(1) as only constant operations are done.
空间复杂度: O(1) as no extra space has been used.
输出
7. 使用算术运算符:* 和 /
在这里,我们将使用算术运算符 * 和 / 来交换两个数字的值。
将a乘以b赋给b,即b=a*b。
将b除以a的结果赋给a,即a=b/a。
将b除以a的结果赋给b,即b=b/a。
下面是实现以上方法的C++程序:
输出
时间复杂度: O(1),因为只进行常量操作。
空间复杂度: O(1),没有使用额外的空间。
8. 改进和简短的方法
这是一种简化的方法,在使用基本运算符交换两个数字的值时,可以在一行内完成。
下面是实现以上方法的C++程序:
输出
时间复杂度: O(1),因为只进行常量操作。
空间复杂度: O(1),没有使用额外的空间。