异或运算

本文介绍了一种在不使用临时变量的情况下交换数组中任意两个元素的方法,并通过一个具体的函数实现这一操作,旨在展示一种智力上的游戏,虽然在实际应用中并无性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于任意向量α,有α^α=0,利用此属性可做无中介变量值交换:

void noTempSwap(int *x, int *y){
    *y=*x^*y;// *y = *x^*y
    *x=*x^*y;//*x = *x^*x^*y = *y
    *y=*x^*y;  //*y = *y^*x^*y = *x
}

注意:这种做法并无性能上的提升,仅仅是一种智力上的游戏。

trick1:数组元素对调

没有中间变量,对调数组中首尾元素顺序。

void reverse_Array(int *a, int count){

  int first, last;

  for (first=0,last=count-1;first<last;first++,last--;){

    noTempSwap(&a[first],&a[last]);
  }

}

  

转载于:https://www.cnblogs.com/wangjunyan/p/5153479.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值