人少,发个问题来大家讨论讨论

Singo
2007-03-05 01:38:12  来自: Singo

在我们做数字排序中通常用的方法两位两位判断大小进行换位,就比如
if(a>b){
c=a;
a=b;
b=c;
}
但这里用到了一个中间变量c,如果我用用这个中间变量呢?还有什么方法可以排序?

   
氷の鋭

2007-03-11 23:18:00 氷の鋭 (神不为者,人为之)

“如果我用用这个中间变量呢?”
什么意思?好像少打字了吧



Singo

2007-03-16 15:04:37 Singo

不好意思
如果我不用这个中间变量呢?
就是说不用中间变量来实现换位



光雨

2007-03-23 10:57:19 光雨

你打错了



SKY

2007-09-18 14:53:11 SKY

不用不行



flanker27

2007-09-24 09:16:12 flanker27

xor...如果&x != &y

x = x xor y
y = x xor y
x = x xor y



Lancy

2007-10-07 22:46:35 Lancy

2007-09-24 09:16:12 flanker27 (Toronto)
  xor...如果&x != &y
  
  x = x xor y
  y = x xor y
  x = x xor y

不太懂...



我爱熊猫

2007-10-25 19:26:44 我爱熊猫

嗯,异或可以做到



windtalker

2007-11-20 18:07:43 windtalker (Bible salesmen)

x = x xor y
y = x xor y
x = x xor y
then x y have exchanged
xor is for binary digits



SoariEz

2007-12-22 19:47:29 SoariEz (河 蟹 横 行 ,草 泥 马 避)

b=a+b;
a=b-a;
b=b-a;



小杨

2007-12-26 20:26:09 小杨

b=a+b;
a=b-a;
b=b-a;

oh!



璃音

2008-11-15 11:10:39 璃音

哇~都好巧妙啊!



Inside

2008-11-15 12:03:22 Inside

  按汇编的方法交换两个变量的数值
  a^=b;
  b^=a;
  a^=b;
  
  下面是我自己做的分析:
  a == 0101 1001
  b == 1100 1010
  a^b == 1001 0011
  b^(a^b) == 0101 1001
  (a^b)^(b^(a^b)) == 1100 1010



hx

2008-11-16 20:43:04 hx (NOP)

看来用异或和
  b=a+b;
  a=b-a;
  b=b-a;
都可以。



∂2½

2009-02-16 18:52:27 ∂2½ (温和的反对派)

异或仅仅能解决整型的交换吧,对于浮点型是不行的



CrossChao

2009-02-24 23:15:35 CrossChao (郁郁闷闷)

关注一下 我来想想!~~





这个小组的成员也喜欢去   · · · · · · 

离散数学
离散数学 (835)
计算机科学 Computer Science
计算机科学 Computer Scie... (1099)
计算机算法艺术
计算机算法艺术 (151)
C语言
C语言 (1445)
程序员书屋
程序员书屋 (1253)
C++及编程
C++及编程 (3122)