c++优雅地交换元素
写排序算法,每次都要引入一个中间变量,让我感觉很不爽,有没有能够优雅地交换c++数组中两个元素的的方法? 这样优雅吗?#include <iostream>
void swap(int &a, int &b) {
if(a == b) return;
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main() {
int x = 123, y = 456;
swap(x, y);
std::cout << x << std::endl;
std::cout << y << std::endl;
return 0;
}
人造人 发表于 2021-10-17 12:16
这样优雅吗?
好优雅{:10_254:} 本帖最后由 傻眼貓咪 于 2021-10-17 15:04 编辑
这是位元算法:a^a^b = b 傻眼貓咪 发表于 2021-10-17 14:28
这是位元算法:a^a^b = a
a ^ a ^ b = b
a ^ b ^ a = b
a ^ b ^ b = a
^_^
#include <iostream>
int main() {
int a = 123, b = 456;
std::cout << (a ^ a ^ b) << std::endl;
std::cout << (a ^ b ^ a) << std::endl;
std::cout << (a ^ b ^ b) << std::endl;
return 0;
}
人造人 发表于 2021-10-17 14:52
已修改,太久没有写 C++,生疏了{:5_109:} 自从学会了 Python
另外再学些 HTML、CS、JS、SQL、单片机
C/C++ 语言就好象在跟我说再见似的,所以程序语言必须天天做啊~{:10_265:} 人造人 发表于 2021-10-17 12:16
这样优雅吗?
来迟的最佳答案{:10_277:}
页:
[1]