怎样用qsort对结构体数组进行排序

sunwantc 2008-07-13 02:13:59
怎样用qsort对结构体数组进行排序.
原代码的注释希望写详细一点.
...全文
616 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunkehappy 2009-03-23
  • 打赏
  • 举报
回复

//对结构体一级排序
struct In
{
double data;
int other;
}s[100]
//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
int cmp( const void *a ,const void *b)
{
return (*(In *)a)->data > (*(In *)b)->data ? 1 : -1;
}
qsort(s,100,sizeof(s[0]),cmp);
K行天下 2008-07-13
  • 打赏
  • 举报
回复
一楼的链接说的很详细
引用一下

#include <stdio.h>
#include <stdlib.h>

struct node
{
int x;
int y;
}node[4]={{4, 0}, {6, 0}, {1, 0}, {5, 0}};

int compare(const void *ele1, const void *ele2)
{
struct node *px, *py;

px = (struct node *)ele1;
py = (struct node *)ele2;

if(px->x < py->x) //主要是这块的处理!!!!!!!!!!!!!!!!!!!!!!!
return 1;
else
return 0;
}

void main(void)
{
int i;

qsort(node, 4, sizeof(struct node), compare);
for(i=0; i<4; i++)
printf("{%d, %d}, ", node[i].x, node[i].y);
}

第四个参数是一个函数指针,其中的参数是数组中两个元素的地址值(不用你管),你需要自己写一下比较函数,通过改变其返回值可进行从小到大或从大到小进行排序

ndsl3334 2008-07-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20031216/10/2568126.html

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧