NeQrhk 2015-06-30 14:24 采纳率: 30.6%
浏览 1668

按照输入的点,任意两个点的距离大小进行快速排序,怎么修改

#include
#include
#include
#define M 10
typedef struct {
int x;
int y;
int z;
}Point[M];
double distance(int x,int y,int z,int x1,int y1,int z1)
{
return ((double)sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1)));

}
int f(const void c,const void *d)
{
return (
(int*)c- (int)d);
}
int main()
{
Point point;
int k,n;
int x1,y1,z1;
int i=0;
int j;
int t=0;
double sum[50];
scanf("%d",&k);
for(i=0;i<k;i++)
{
scanf("%d%d%d",&x1,&y1,&z1);
point[i].x=x1;
point[i].y=y1;
point[i].z=z1;
i++;
}
for(j=0;j<i;j++)
{
for(k=j+1;k<i;k++)
{
sum[t]=distance(point[j].x,point[j].y,point[j].z,point[k].x,point[k].y,point[k].z);
}
}
qsort(sum,i,sizeof(int),f);
n=i;
for(i=0;i<n;i++)
printf("%lf ",sum[i]);
return 0;
}
快速排序函数qsort
不可以对双精度的数进行排序吗?
写成
qsort(sum,i,sizeof(double),f)
不可以吗?

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-06-30 15:24
    关注

    可以是可以,但是
    int f(const void c,const void d)
    {
    return ((int
    )c- (int)d);
    }

    这个你写错了
    应该转换成double *

    评论

报告相同问题?

悬赏问题

  • ¥15 python变量和列表之间的相互影响
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)