1交换算法

  1 //交换算法
  2 
  3 #include "swap.h"
  4 #include <stdio.h>
  5 #include <iostream>
  6 
  7 
  8 using namespace std;
  9 #define swap_m(x,y,t) ((t)=(x),(x)=(y),(y)=(t))        // #define后面不要加 分号;
 10 void swap(int x,int y);
 11 void swap_p(int *px,int *py);
 12 void swap_r(int &rx,int &ry);
 13 
 14 int main()
 15 {
 16     int a,b,temp;
 17     a=1;
 18     b=10;
 19     printf("交换前:a=%d,b=%d


",a,b);
 20 
 21     //方法1
 22     printf("通过临时变量交换---->完成值传递交换
");
 23     temp=a;
 24     a=b;
 25     b=temp;
 26     printf("交换后:a=%d,b=%d


",a,b);
 27 
 28     //方法2
 29     a=1;
 30     b=10;
 31     swap(a,b);
 32     printf("交换后:a=%d,b=%d


",a,b);
 33 
 34     //方法3
 35     a=1;
 36     b=10;
 37     swap_p(&a,&b);//不要忘记&符号
 38     printf("交换后:a=%d,b=%d


",a,b);
 39 
 40     //方法4
 41     printf("通过define宏交换---->完成值传递交换
");
 42     a=1;
 43     b=10;
 44     swap_m(a,b,temp);
 45     printf("交换后:a=%d,b=%d


",a,b);
 46 
 47 
 48     //方法5      printf("通过引用交换----->完成实参交换


");
 49     a=1;
 50     b=10;
 51     swap_r(a,b);
 52     printf("交换后:a=%d,b=%d


",a,b);
 53 
 54     //方法6
 55     printf("实用C++模板
");
 56     a=1;
 57     b=10;
 58     std::swap(a,b);
 59     printf("交换后:a=%d,b=%d


",a,b);
 60 
 61     printf("hello world...
");
 62     system("pause");
 63     return 0;
 64 }
 65 
 66 //默认按值传递,所以只会传a,b的拷贝,不会修改a,b本身
 67 void swap(int x,int y)
 68 {
 69     int temp;
 70     temp = x;
 71     x = y;
 72     y =temp;
 73     printf("拷贝---->完成值传递交换
");
 74 }
 75 
 76 
 77 //指针也是值传递,只不过形参和实参指向的都是同一个内存地址,所以才能够修改实参的值...记住了哦
 78 void swap_p(int *px,int *py)
 79 {
 80     int temp;
 81     temp = *px;
 82     *px = *py;
 83     *py = temp;
 84     printf("指针---->完成值传递交换
");
 85 }
 86 
 87 
 88 //引用,可以直接修改实参的数据
 89 void swap_r(int &rx,int &ry)
 90 {
 91 
 92     int temp;
 93     temp=rx;
 94     rx = ry;
 95     ry=temp;
 96     printf("引用---->可以直接修改实参的数据
");
 97 
 98 
 99     return;
100 }
原文地址:https://www.cnblogs.com/Froger/p/6771664.html