#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情况)或>(所有其他情况)。

10-06 12:02