C++程序 交换两个数字

C++程序 交换两个数字

这里,我们将看到如何使用C++程序交换两个数字。以下是示例:

输入: a = 2,b = 3

输出: a = 3,b = 2

输入: a = 0,b = 1

输出: a = 1,b = 0

在C++中有8种交换两个数字的方法

  1. 使用第三个变量。
  2. 不使用第三个变量。
  3. 使用引用调用。
  4. 使用swap()函数。
  5. 使用位运算符。
  6. 使用友元函数。
  7. 使用算术运算符:*和/。
  8. 简短的方法

让我们开始讨论这些方法的每个细节。

1.使用第三个变量

这种方法的思路很简单:

  1. 将a赋值给一个临时变量:temp = a
  2. 将b赋值给a:a = b
  3. 将temp赋值给b:b = temp

以下是实现上述方法的C++程序:

// C++程序交换两个数字
//使用第三个变量
#include<bits/stdc++.h>
using namespace std;
 
//驱动程序
int main()
{
    int a = 2,b = 3;
    
    cout << "交换前a = " <<
             a << ",b = " << b << endl;
    int temp;   
    temp = a;
    a = b;
    b = temp;
    cout << "交换后a = " << a <<
            ",b = " << b << endl;
    return 0;
}  

输出

交换前a = 2,b = 3
交换后a = 3,b = 2

时间复杂度: O(1),因为只进行恒定的操作。

空间复杂度: O(1),因为没有使用额外的空间。

2.不使用第三个变量(使用+和-)

这里将使用以下方法:

  1. 将a和b的和赋值给b,即b = a + b。
  2. 将b和a的差赋值给a,即a = b – a。
  3. 将b和a的差赋值给b,即b = b – a。

以下是实现上述方法的C++程序:

//不使用第三个变量交换两个数字的C++程序
#include<bits/stdc++.h>
using namespace std;
 
//驱动程序
int main()
{
    int a = 2,b = 3;
    
    cout << "交换前a = " <<
             a << ",b = " <<b << endl;
 
    b = a + b;  
    a = b - a; 
    b = b - a; 
   
    cout << "交换后a = " << a <<
            ",b = " << b << endl;
    return 0;
}  

输出

交换前a = 2,b = 3
交换后a = 3,b = 2

时间复杂度: O(1),因为只进行恒定的操作。

空间复杂度: O(1),因为没有使用额外的空间。

3.使用引用调用

这里将使用以下方法:

  1. 创建一个swap函数,该函数将使用第三个变量temp来交换两个数字,如方法1(使用第三个变量)所讨论的。
  2. 使用引用调用方法传递参数a和b来调用swap函数。

以下是实现上述方法的C++程序:

// C++ program to swap two
// numbers using friend
// function
#include <bits/stdc++.h>
using namespace std;
 
// class declaration
class Swap
{
    private:
        int a, b, temp;
    public:
        Swap(int x, int y) // Constructor
        {
            a = x;
            b = y;
        }
        friend void swapUsingFriend(Swap &s;);
};
 
// Friend function definition
void swapUsingFriend(Swap &s;)
{
    s.temp = s.a;
    s.a = s.b;
    s.b = s.temp;
}
 
// Driver code
int main()
{
    Swap s(2, 3);
 
    cout << "Before swapping a = " <<
             s.a << " , b = " << s.b << endl;
     
      // Function call to swap
    swapUsingFriend(s);
 
    cout << "After swapping a = " <<
             s.a << " , b = " << s.b << endl;
    return 0;
}  

输出

Before swapping a = 2 , b = 3
After swapping a = 3 , b = 2

时间复杂度: O(1) as only constant operations are done.

空间复杂度: O(1) as no extra space has been used.

// 使用友元函数交换两个数字的C++程序
#include <iostream>
using namespace std;
 
class Swap {
 
// 声明变量:temp,a和b
int temp, a, b;
 
public:
Swap(int a, int b) //定义Swap方法
{
this->a = a;
this->b = b;
}
 
friend void swap(Swap&); //调用友元函数
};
 
void swap(Swap& s1) //交换值的方法
{
 
cout << "\nBefore Swapping: " << s1.a << " " << s1.b;
 
s1.temp = s1.a;
s1.a = s1.b;
s1.b = s1.temp;
cout << "\nAfter Swapping: " << s1.a << " " << s1.b;
}
 
// Driver Code
int main()
{
// 声明和初始化Swap对象
Swap s(4, 6);
swap(s);
return 0;
}  

输出

Before Swapping: 4 6
After Swapping: 6 4

7. 使用算术运算符:* 和 /

在这里,我们将使用算术运算符 * 和 / 来交换两个数字的值。

将a乘以b赋给b,即b=a*b。

将b除以a的结果赋给a,即a=b/a。

将b除以a的结果赋给b,即b=b/a。

下面是实现以上方法的C++程序:

// C++ program to swap two numbers using * and /
#include<bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
int a = 5, b = 8;
 
cout << "Values before swapping a = " <<
 a << " , b = " << b << endl;
 
b = a * b;
a = b / a;
b = b / a;
 
cout << "Values after swapping a = " << a <<
 " , b = " << b << endl;
return 0;
}  

输出

Values before swapping a = 5 , b = 8
Values after swapping a = 8 , b = 5

时间复杂度: O(1),因为只进行常量操作。

空间复杂度: O(1),没有使用额外的空间。

8. 改进和简短的方法

这是一种简化的方法,在使用基本运算符交换两个数字的值时,可以在一行内完成。

下面是实现以上方法的C++程序:

// C++ program to swap two numbers using arithmetic operators.
#include<bits/stdc++.h>
using namespace std;
 
// Driver code
int main()
{
int a = 5, b = 8;
 
cout << "Values before swapping a = " <<
 a << " , b = " << b << endl;
 
b = a - b + (a = b);
 
cout << "Values after swapping a = " << a <<
 " , b = " << b << endl;
return 0;
}  

输出

Values before swapping a = 5 , b = 8
Values after swapping a = 8 , b = 5

时间复杂度: O(1),因为只进行常量操作。

空间复杂度: O(1),没有使用额外的空间。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例