C语言 最快的两数交换
来源:互联网 发布:哪个软件可以租到豪车 编辑:程序博客网 时间:2024/05/16 12:47
搬运自:http://hi.baidu.com/evergreen19/blog/item/dbc1d5f13241c3a5a50f5245.html
最近开始写,RC4,由于要使用不少的swap,所以swap的算法效率对RC4的整体速度是有着不小的影响的,因此总结了一些不错的交换算法与大家共享。
int a=5,b=7;
方法一: 内联汇编,利用堆栈区 -- Swapping containers
__asm{
push a
push b
pop a
pop b
}
方法二:使用异或运算
a = a^b;
b = a^b;
a = a^b;
或写成:
a^=b;
b^=a;
a^=b;
方法三:加法交换
a = a+b;
b = a-b;
a = a-b;
方法二和三原理相同:
利用反函数的性质,函数 c=f(a, b),必须存在反函数,a = g(c, b);
这样,可以用
a = f(a, b);
b = g(a, b);
a = g(a, b);
三步交换两个数
方法四:利用XCHG 指令--- 使用专用指令(Dedicated instructions)
__asm{
mov eax,a
xchg eax,b
mov a,eax
}
不过需要使用寄存器的大小,如:
1、16位CPU所含有的数据寄存器有: (AX、BX、CX和DX)
2、 32位CPU所含有的数据寄存器有:(EAX、EBX、ECX和EDX)
- C语言 最快的两数交换
- 最快的两数交换算法
- C语言实现两数的交换
- C语言实现两数交换函数
- C语言实现两数交换函数
- C语言两数实现交换
- c语言实现两数交换
- 不用局部变量实现C语言两数交换算法
- 小朋友学C语言(25):两数交换
- 交换两个数的值(C语言)的两种方法
- c语言--交换两个数的函数
- C语言交换两个数的值
- 【C语言】交换两个数的内容
- 交换两个数的C语言程序
- C语言交换两个数的值
- 【c程序】用指针交换两数的值
- C语言-交换两个数
- c语言两个数交换
- gdb
- 分享45个android实例源码,很好很强大.收藏吧
- Vxworks 进程间通信1--消息队列
- 流程图培训讲义
- VxWorks进程间通信2 -- 信号量
- C语言 最快的两数交换
- 生活管理实用技能
- 矩阵链乘问题——求最小乘数
- 嵌入式操作系统内核原理和开发(cpu的那些事)
- VxWorks进程通信0 -- 任务管理
- 执行带有输出参数的存储过程
- Android学习笔记(2)————Android四大组件之二(Service )
- 黑马程序员 java学习笔记-基础知识盘点
- vc++按钮应用大全