为什么这个排序的结果不对呢?求解~~
#include <stdio.h>#include <stdlib.h>
#include <math.h>
typedef struct point{//点的数据结构
double x;
double y;
}point;
typedef struct edge{//边的数据结构
int a;
int b;
double cost;
}edge;
//qsort排序
int cmp(const void *a,const void *b){
return (((edge *)a)->cost)-(((edge *)b)->cost)?-1:1;
}//cmp
int main()
{
int i=0,j=0,k=0;
int m=0;
scanf("%d",&m);
//输入顶点的坐标
point p[100];
edge e[10000];
for(i=0;i<m;i++){
scanf("%lf %lf",&p[i].x,&p[i].y);
//printf("%lf %lf ",p[i].x,p[i].y);
}//for
//建图
i=0;
for(j=0;j<m;j++){
for(k=j+1;k<m;k++){
e[i].a=j;
e[i].b=k;
e[i].cost=sqrt((p[j].x-p[k].x)*(p[j].x-p[k].x)+(p[j].y-p[k].y)*(p[j].y-p[k].y));
i++;
}//for
}//for
printf("\n");
for(i=0;i<m*(m-1)/2;i++){
printf("%.2f ",e[i].cost);
}
printf("\n");
//按边值进行排序
qsort(e,m*(m-1)/2,sizeof(e[0]),cmp);
for(i=0;i<m*(m-1)/2;i++){
printf("qsort----%.2f ",e[i].cost);
}
return 0;
}