指令宝贝的玩具:C语言的qsort对正负数同时排序的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/26 04:36:23
qsort对正负数同时排序的问题
int cmp(const void* a,const void* b)
{
if (*(double**)a!=*(double**)b) return *(double**)a>*(double**)b?1:-1;
else return *((double**)a+1)>*((double**)b+1)?1:-1;

}

double a[MAXN][2];

qsort(a,n,sizeof(a[0]),cmp);

因为负数的二进制表示形式问题<第一位为1>
导致cmp函数判断了负数比正数大
导致排序之后负数排在了正数后面
怎样解决这个问题让qsort可以处理符号排序
int cmp(const void* a,const void* b)
{
if (*(double*)a!=*(double*)b) return *(double*)a>*(double**)b?1:-1;
else return *((double*)a+1)>*((double*)b+1)?1:-1;

}
这样就对了。

不用考虑负数的二进制是怎么表示的问题,