算法题汇总

1. 交换两个整型变量值,要求不定义新变量作为临时变量


• 算法一

算法实现

template <class T>
void g_SwapInteger(T &a, T &b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

算法证明

a0 = a                 b0 = b
a1 = a0 ^ b0 = a ^ b         b1 = b0 = b
a2 = a1 = a ^ b          b2 = a1 ^ b1 = a ^ b ^ b = a
a3 = a2 ^ b2 = a ^ b ^ a = b   b3 = b2 =a

• 算法二

▶ 算法实现

template <class T>
void g_SwapInteger(T &a, T &b)
{
    a = a - b;
    b = a + b;
    a = b - a;
}

▶ 算法证明

a0 = a,              b0 = b
a1 = a0 - b0 = a - b,        b1 = b0 = b
a2 = a1 = a - b,          b2 = a1 + b1 = a - b + b = a
a3 = b2 - a2 = a - (a - b) = b,   b3 = b2 = a

posted @   碎语心弦  阅读(191)  评论(0)    收藏  举报
编辑推荐:
· 编码之道,道心破碎。
· 记一次 .NET 某发证机系统 崩溃分析
· 微服务架构学习与思考:SOA架构与微服务架构对比分析
· tomcat为什么假死了
· 聊一聊 Linux 上对函数进行 hook 的两种方式
阅读排行:
· 编码之道,道心破碎。
· 知名开源项目Alist被收购!惹程序员众怒,开团炮轰甲方
· 突发,小红书开发者后门被破解?!
· 历时半年,我将一个大型asp.net的零代码快速开发平台转成了java
· 如何给 GitHub Copilot "洗脑”,让 AI 精准遵循指令产出高质量代码
点击右上角即可分享
微信分享提示