关于两数互换的算法

关于两数交换的算法更多资料参见http://hi.baidu.com/chengui0327/blog/item/be7be30109086e19738b653e.ht

关于两数交换的算法

void swap4(int *a, int *b){    if(a <b)    {        a=(int*)(b-a);                      /* 用两个变量分配的地址来转换 */        b=(int*)(b-(int(a)&0x0000ffff));     /* int(a)&0x0000ffff 为取低16位的偏移地址 */        a=(int*)(b+(int(a)&0x0000ffff));    }    else    {        b=(int*)(a-b);        a=(int*)(a-(int(b)&0x0000ffff));        b=(int*)(a+(int(b)&0x0000ffff));    }          /* 优点:不会溢出,可进行相同数值的交换; 缺点:运算复杂 且必须假设两待交换变量为指针类型  */}