数据结构与算法(一) 交换
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; }
相关文章推荐
- 《常见算法和数据结构》优先队列(3)——堆排序
- 第十周 技术博客发表 数据结构
- 集合框架(数据结构之栈和队列)
- 《常见算法和数据结构》优先队列(2)——二叉堆
- 《常见算法和数据结构》优先队列(1)——API和初等实现
- 第八周 技术博客发表 数据结构
- 数据结构与算法分析 c++描述 读书笔记(1)
- 数据结构之堆(Heap)的实现
- 第三章 数据结构与算法概述
- MySQL索引背后的数据结构及算法(吐血推荐)
- 数据结构——哈希表
- 数据结构中,“结点”的意思
- 字符驱动涉及的数据结构及方法
- Boost C++: 数据结构---tuple
- 数据结构学习笔记(九)-各大排序算法
- 数据结构和算法 – 番外篇.时间测试类Timing
- 数据结构之数组篇
- 链表简述
- 【数据结构】之二叉树的java实现
- 数据结构之位运算篇