您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法(一) 交换

2016-04-28 21:40 323 查看

数据结构与算法(一) 交换

这里所有的算法都不涉及到语言,各种语言中的差别需要读者自行体验,当然也会偶尔涉及

交换

交换是我们在编写程序时,所用到的最为常用的算法之一,但是就是这简单的算法也让人们回味无穷

首先交换的本质是相同的,下面提供两种交换的思路

原本的两个空间的值和第三个空间的值进行交换

“`c

void swap_p(int *a,int *b)

{

int temp = 0;

temp = *a;

*a = *b;

*b = temp;

}

这里使用的是C语言中的指针,(注意这里是值交换)
* 利用运算符和计算机的存储特性,就可以轻松交换我们想要交换的值
```c
void swap_pn(int *a,int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}


这里是利用异或运算(相同为1,不同为0),这些值在计算机中存储为一个二进制的序列。

这里我们的加减法运算也可以达到相同效果

void swap_pn(int *a,int *b)
{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}


这里是完整版代码

#include<stdio.h>
#include<stdlib.h>
#include "tool.h"
//声明
void swap(int a,int b);
void swap_p(int *a,int *b);
void swap_pn(int *a,int *b);
void main11()
{
int a = 3;
int b = 4;
int c = 0;
swap(a,b);
printf("swap function:a:%d,b:%d\n",a,b);
swap_p(&a,&b);
printf("swap_p function:a:%d,b:%d\n",a,b);
swap_m(a,b,c);
printf("swap_m macro:a:%d,b:%d\n",a,b);
swap_pn(&a,&b);
printf("swap_pn macro:a:%d,b:%d\n",a,b);
system("pause");
}
void swap(int a,int b)
{
int temp = 0;
temp = a;
a = b;
b = temp;
}
void swap_p(int *a,int *b)
{
int temp = 0;
temp = *a;
*a = *b;
*b = temp;
}
void swap_pn(int *a,int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: