如何确保铜陵公司网站被搜索引擎有效收录?
摘要:网站收录是怎么回事,铜陵公司做网站,WordPress 文章 iframe,wordpress创建配置文件大家好啊,在今天的快乐刷题中,我们遇到了这样一道题目&#x
网站收录是怎么回事,铜陵公司做网站,WordPress 文章 iframe,wordpress创建配置文件大家好啊#xff0c;在今天的快乐刷题中#xff0c;我们遇到了这样一道题目#xff1a;
题目
写出 三种不同方式的 交换两个整数变量的 函数
交换变量的三种解法
常规方式
想要交换两个变量很简单#xff0c;第一种方式就是新建一个临时变量#xff0c;具体流程如下在今天的快乐刷题中我们遇到了这样一道题目
题目
写出 三种不同方式的 交换两个整数变量的 函数
交换变量的三种解法
常规方式
想要交换两个变量很简单第一种方式就是新建一个临时变量具体流程如下
具体到c语言代码
//传递指针实现跨函数修改值
void common(int* a, int* b) {int mid 0;mid *a;*a *b;*b mid;return;
}加减法交换
如果在不使用临时变量的情况下我们可以也利用加减法来实现数值的交换 我们结合具体的算法进行分析
// 加减运算交换法void add_sub(int* a, int* b) {*a *a *b;*b -*b;*b *a;*a *a - *b;return;
}其具体的运算过程如下 位运算交换
在了解这个算法前我们可以先复习一下本方法的主角异或运算
异或运算简介
异或运算是一种二进制运算它对两个位进行操作。其运算规则如下 当两个位不相同时结果为1。 当两个位相同时结果为0。 用符号“^”表示异或运算其真值表如下
ABA ^ B000011101110
例如对于两个整数 5 和 3它们的二进制表示分别为 101 和 011。进行异或运算的过程如下 101 (5)^ 011 (3) 110 (6) 因此5 异或 3 的结果是 6。
异或运算的性质 用异或运算实现交换
基于上面的基础知识我们来看一看以下的算法
void bit(int* a, int* b) {*a *a ^ *b;*b *b ^ *a;*a *a ^ *b;return;
}具体过程如下 序号2的超级详细的运算过程如下
日常使用推荐哪一种运算方法呢
当然是常规算法啦 为什么不是看上去更加省内存的 位运算法 或者 加减交换法 呢
常规方式
优点
可读性高代码非常直观容易理解和维护。即使是初学者也能快速理解其逻辑。安全性高不会出现任何溢出或错误情况非常安全。适用性强适用于所有情况包括 a 和 b 指向同一个地址的情况。
缺点
占用额外内存需要一个临时变量来存储其中一个值但现代编译器通常会对这种简单的交换操作进行优化性能非常接近位运算交换。
位运算交换
优点
不占用额外内存不需要临时变量节省了内存空间特别是在资源受限的环境中如嵌入式系统非常有用。不会溢出与加减法相比位运算不会导致整数溢出因此更加安全。
缺点
可读性差代码较为复杂需要对位运算的性质有较深的理解。对于不熟悉位运算的开发者来说可能需要花费更多时间来理解其逻辑。存在不适用的情况如果 a 和 b 指向同一个地址会导致 a 和 b 都变为0。性能差异在某些情况下位运算可能比简单的临时变量交换稍慢但这种差异通常可以忽略不计。不过位运算的复杂性可能会导致编译器优化不如临时变量交换。
推荐使用临时变量交换的原因
在大多数情况下笔者都推荐使用临时变量来交换两个整数的内容
可读性高代码更直观容易理解和维护。安全性高基本不会出现任何错误情况非常安全。适用性强适用于所有情况无需额外检查。
