成都华润建材:C语言的qsort对正负数同时排序的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/11 19:07:07
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;

}
这样就对了。

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