读书人

关于两数互换的算法

发布时间: 2012-11-07 09:56:10 作者: rapoo

关于两数交换的算法

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));    }          /* 优点:不会溢出,可进行相同数值的交换; 缺点:运算复杂 且必须假设两待交换变量为指针类型  */}

读书人网 >编程

热点推荐