#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
struct island{ double left; //gobal
double right;
} island[MAX];
...
int cmp(const void *ptr1,const void *ptr2 )
{
return (*(struct island*)ptr1).right > (*(struct island*)ptr2).right;
}
qsort(island,num,sizeof(island[0]),cmp); // "num" is the number of the input data
//when I do print,it seems that if num<10 is right,else wrong
for(i=0;i<num;i++)
{
printf("%g\t",island[i].right);
}
最佳答案
你的cmp
函数应该返回1
或更大,如果左值>
右值0
如果值相等-1
如果左边的值小于或等于右边的值
您的比较仅返回<
(对于1
情况)或>
(所有其他情况)。