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

Singo

2007-03-05 01:38:12 来自: Singo(物徒公社(www.woooto.com))

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

  • 氷の鋭

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

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

  • Singo

    2007-03-16 15:04:37 Singo (物徒公社(www.woooto.com))

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

  • 光雨

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

    你打错了

  • cry

    2007-09-18 14:53:11 cry

    不用不行

  • 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 我爱熊猫

    嗯,异或可以做到

  • desperado

    2007-11-20 18:07:43 desperado (别人笑我太疯癫 我笑他人看不穿)

    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 (Agreeable Melancholy.)

    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 (死了都要二)

    关注一下 我来想想!~~


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

计算机科学 Computer Science
计算机科学 Computer Scie... (2508)
程序员书屋
程序员书屋 (2105)
离散数学
离散数学 (1509)
C语言
C语言 (3213)
C++及编程
C++及编程 (4929)
计算机算法艺术
计算机算法艺术 (157)