原本以为仅仅是利用变量或者异或可以交换两个整数;今天学到,加减也可以实现两个整数的交换。
(本笔记适合熟悉一种编程语言的 coder 翻阅)
【学习的细节是欢悦的历程】
自学并不是什么神秘的东西 ,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。 —— 华罗庚
原以为仅利用变量或者异或可以交换两个整数
交换两个整数有几种途径
(今天学到,“加减”也可以实现两个整数的交换)
本文质量分:
【 96 】
本文地址:
https://blog.csdn.net/m0_57158496/article/details/132899582
CSDN质量分查询入口:http://www.csdn.net/qc
目 录
◆ 交换两数整途径有几种
1、本文缘起
本以为,交换两个整数除了变量就是异或了,今天看到“加减”也可以。记此笔记,以识今儿个又涨姿势了。🤗🤗🤗
本来我是不懂加减原理的,但有了大佬huazie 的解析回答,始明其理。在此谢谢大佬huazie 。
回页目录
2、算法解析
两个整数变量的交换,除了Python的直接交换,还有适宜任意编程语言的利用变量过渡、加减操作、异或操作三种途径。
代码运行效果截屏图片
2.1 直接交换(Python)
算法解析 :由于Python 系统已经对“交换两个变量”作了优化处理,我们的代码可以直接交换两个变量。系统编译时会知道先交换赋值行号右边的变量,然后赋值给行号左边的变量。这些工作都是由Python系统“自动”完成,不需要写代码的人操心。这,也是Python“代码简洁”的特性体现。
a, b = 56 , 89
print ( f"\na、b初值:a = { a} , b = { b} " )
a, b = b, a
print ( f"\n1、Python直接交换:a = { a} , b = { b} " )
回页目录
2.2 借助变量交换
算法解析 :借助一个变量来过渡,使两个整数变量的值得以实现。此法易于理解,可适宜用任意语言编写代码。
c = a
a = b
b = c
print ( f"\n2、利用变量交换:a = { a} , b = { b} " )
回页目录
2.3 加减运算交换
算法解析 :此法逻辑剑走偏锋,用加减运算完成两个整数变量的互换。虽然不易于理解,但通过实例代入,还是可以很容易看清算法逻辑。不用判定大小,两个整数谁大谁小都不影响结果。此法亦可适宜用任意语言编写代码。
顺序加减
a = b - a
b = b - a
a = b + a
print ( f"\n3、加减操作交换:a = { a} , b = { b} " )
改变两数顺序加减
b = a - b
a = a - b
b = a + b
print ( f" 改变加减顺序交换:a = { a} , b = { b} " )
回页目录
2.4 异或位运算
算法解析 :位运算法可以说是经典高效的两个整数交换算法,就是代码不易于理解,算得上是阳春白雪了,但适宜用任意语言来编写代码。
a = b ^ a
b = b ^ a
a = b ^ a
print ( f"\n4、异或操作交换:a = { a} , b = { b} " )
回页目录
3、Python中直接交换和利用变量,可以是任意类型变量
除了前面的整型,我们来看看其它数据类型,对前述交换途径,是不是也都适用。
字符串 列表
经试验,加减运算和位运算交换两个变量,都是仅可适应整数;Python的直接交换和利用变量过渡交换,可以适用任意数据类型变量。
回页目录
4、参考文章
回页目录
5、完整源码
(源码较长,点此 跳过源码)
a, b = 56 , 89
print ( f"\na、b初值:a = { a} , b = { b} " )
a, b = b, a
print ( f"\n1、Python直接交换:a = { a} , b = { b} " )
c = a
a = b
b = c
print ( f"\n2、利用变量交换:a = { a} , b = { b} " )
a = b - a
b = b - a
a = b + a
print ( f"\n3、加减操作交换:a = { a} , b = { b} " )
b = a - b
a = a - b
b = a + b
print ( f" 改变加减顺序交换:a = { a} , b = { b} " )
a = b ^ a
b = b ^ a
a = b ^ a
print ( f"\n4、异或操作交换:a = { a} , b = { b} " )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
回页首
上一篇: 原址删除有序数组重复数字 (给定一个有序数组,原址删除重复超过两次的整数) 下一篇:
我的HOT 博:
本次共计收集 228 篇博文笔记信息,总阅读量 39.10w,平均阅读量 1714。已生成 26 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 2023-09-11 05:52:46 完成,用时 4 分 47.95 秒。
ChatGPT国内镜像站初体验:聊天、Python代码生成等 ( 58196 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/129035387 点赞:125 踩 :0 收藏:795 打赏:0 评论:75 本篇博文笔记于 2023-02-14 23:46:33 首发,最晚于 2023-07-03 05:50:55 修改。 让QQ群昵称色变的神奇代码 ( 57819 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122566500 点赞:24 踩 :0 收藏:83 打赏:0 评论:17 本篇博文笔记于 2022-01-18 19:15:08 首发,最晚于 2022-01-20 07:56:47 修改。 pandas 数据类型之 DataFrame ( 9078 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/124525814 点赞:6 踩 :0 收藏:31 打赏:0 评论:0 本篇博文笔记于 2022-05-01 13:20:17 首发,最晚于 2022-05-08 08:46:13 修改。 个人信息提取(字符串) ( 7101 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/124244618 点赞:1 踩 :0 收藏:13 打赏:0 评论:0 本篇博文笔记于 2022-04-18 11:07:12 首发,最晚于 2022-04-20 13:17:54 修改。 罗马数字转换器|罗马数字生成器 ( 6941 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122592047 点赞:0 踩 :0 收藏:1 打赏:0 评论:0 本篇博文笔记于 2022-01-19 23:26:42 首发,最晚于 2022-01-21 18:37:46 修改。 Python字符串居中显示 ( 6798 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122163023 点赞:1 踩 :0 收藏:6 打赏:0 评论:1 本篇博文笔记于 2021-12-26 23:35:29 发布。 Python列表(list)反序(降序)的7种实现方式 ( 6336 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/128271700 点赞:5 踩 :0 收藏:19 打赏:0 评论:8 本篇博文笔记于 2022-12-11 23:54:15 首发,最晚于 2023-03-20 18:13:55 修改。 斐波那契数列的递归实现和for实现 ( 5486 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122355295 点赞:4 踩 :0 收藏:2 打赏:0 评论:8 本篇博文笔记于 2022-01-06 23:27:40 发布。 练习:字符串统计(坑:f‘string‘报错) ( 5058 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/121723096 点赞:0 踩 :0 收藏:1 打赏:0 评论:0 本篇博文笔记于 2021-12-04 22:54:29 发布。 python清屏 ( 4963 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/120762101 点赞:0 踩 :0 收藏:7 打赏:0 评论:0 本篇博文笔记于 2021-10-14 13:47:21 发布。 回车符、换行符和回车换行符 ( 4936 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/123109488 点赞:1 踩 :0 收藏:2 打赏:0 评论:0 本篇博文笔记于 2022-02-24 13:10:02 首发,最晚于 2022-02-25 20:07:40 修改。 练习:尼姆游戏(聪明版/傻瓜式•人机对战) ( 4887 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/121645399 点赞:14 踩 :0 收藏:42 打赏:0 评论:0 本篇博文笔记于 2021-11-30 23:43:17 发布。 密码强度检测器 ( 4253 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/121739694 点赞:1 踩 :0 收藏:4 打赏:0 评论:0 本篇博文笔记于 2021-12-06 09:08:25 首发,最晚于 2022-11-27 09:39:39 修改。 练习:生成100个随机正整数 ( 4190 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122558220 点赞:1 踩 :0 收藏:6 打赏:0 评论:0 本篇博文笔记于 2022-01-18 13:31:36 首发,最晚于 2022-01-20 07:58:12 修改。 罗马数字转换器(用罗马数字构造元素的值取模实现) ( 4099 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122608526 点赞:0 踩 :0 收藏:0 打赏:0 评论:0 本篇博文笔记于 2022-01-20 19:38:12 首发,最晚于 2022-01-21 18:32:02 修改。 我的 Python.color() (Python 色彩打印控制) ( 3982 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/123194259 点赞:2 踩 :0 收藏:7 打赏:0 评论:0 本篇博文笔记于 2022-02-28 22:46:21 首发,最晚于 2022-03-03 10:30:03 修改。 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法) ( 3825 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/124424935 点赞:1 踩 :0 收藏:4 打赏:0 评论:0 本篇博文笔记于 2022-04-26 12:46:25 首发,最晚于 2022-04-27 21:22:07 修改。 练习:仿真模拟福彩双色球——中500w巨奖到底有多难?跑跑代码就晓得了。 ( 3622 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/125415626 点赞:3 踩 :0 收藏:6 打赏:0 评论:3 本篇博文笔记于 2022-06-22 19:54:20 首发,最晚于 2022-06-23 22:41:33 修改。 random.sample()将在python 3.9x后续版本中被弃用 ( 3539 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/120657230 点赞:0 踩 :0 收藏:0 打赏:0 评论:0 本篇博文笔记 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) ) ( 3407 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/124539589 点赞:4 踩 :0 收藏:2 打赏:0 评论:3 本篇博文笔记于 2022-05-02 13:02:39 首发,最晚于 2022-05-21 06:10:42 修改。 Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义 ( 3377 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/123087606 点赞:0 踩 :0 收藏:4 打赏:0 评论:3 本篇博文笔记于 2022-02-23 13:08:07 首发,最晚于 2022-04-04 23:52:38 修改。 练习:小炼二维数组 ( 3234 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/125175592 点赞:9 踩 :0 收藏:5 打赏:0 评论:9 本篇博文笔记于 2022-06-07 23:54:43 首发,最晚于 2022-06-08 00:31:49 修改。 练习:求列表(整数列表)平衡点 ( 3201 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/121737612 点赞:0 踩 :0 收藏:0 打赏:0 评论:0 本篇博文笔记 练习:银行复利计算(用 for 循环解一道初中小题) ( 3105 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/123854548 点赞:0 踩 :0 收藏:0 打赏:0 评论:0 本篇博文笔记于 2022-03-30 20:06:37 首发,最晚于 2022-04-06 18:15:16 修改。 练习:柱状图中最大矩形 ( 3089 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/122032365 点赞:0 踩 :0 收藏:0 打赏:0 评论:0 本篇博文笔记于 2021-12-19 23:47:07 发布。 练习:电话拨号键盘的字母组合(一个缩进给我惹了麻烦) ( 3009 阅读) 博文地址:https://blog.csdn.net/m0_57158496/article/details/121887995 点赞:0 踩 :0 收藏:0 打赏:0 评论:0 本篇博文笔记于 2021-12-12 15:25:58 发布。
推荐条件
阅读量突破三千
(更多热博 ,请点击蓝色文字跳转翻阅)
回页首
精品文章:
来源:老齐教室
回页首
◆ Python 入门指南 【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: