当前位置: 代码迷 >> C语言 >> 结构体
  详细解决方案

结构体

热度:485   发布时间:2006-11-21 12:48:11.0
结构体
请问结构体可以进行排序吗,要怎么做呢?
比方说,结构体里面有3个参数,要以其中一个为排序条件,那其他2个参数怎么办呢?
我做个一个,但是结果只运行了一个参数,其他的都没有改变,有知道的告诉下可以吗>?
搜索更多相关的解决方案: 结构体  

----------------解决方案--------------------------------------------------------
完全没明白你在说什么,把你做的发上来看看
----------------解决方案--------------------------------------------------------
一样的可以.
假设 结构体数组list[10];
结构体变量temp;大致代码如下(冒泡)
for(int i=0;i<10;i++)
{
for(int j=0;j<9;j++)
{
if(list[j].a<list[j+1].a)
{
temp=list[i],list[j]=list[j+1],list[j+1]=temp;
}
}
}
----------------解决方案--------------------------------------------------------
那要看具体的要求
如果有3个参数,可以先按1个参数排序,之后按第2个参数排序,最后按第3个参数排序
比如
先按系排序,在各个系中,再按班级进行排序,在班级中,再按学号进行排序

就是这样的,这个叫参数排序吧,记不清了,下去看看
----------------解决方案--------------------------------------------------------
看晕了
怎么是这样的
在排序中排序
不知道怎么搞
关切中


----------------解决方案--------------------------------------------------------
楼主问的问题就好比是问:
按姓氏比划排序,那姓后面的名字该怎么排呢?
----------------解决方案--------------------------------------------------------
我靠!!!!!!!!!!!
很简单嘛!!!!!!!!!1
不想你说的那么复杂呀!!!!!!!!!
你要以结构体里什么数排续,你就每次调用结构体了的那个数就可以了!!!!!!!
其余排法就和其他是一样的了!!!!!!!!!!!!!!!!
----------------解决方案--------------------------------------------------------
用C语言标准函数――STDLIB自带的快速排序进行结构体排序

/*特别为你写的*/
#include "stdlib.h"
typedef struct box {
int s;
long sum;
char name[10];
} T;
T temp,data[10];
int cmp(void const *a,void const *b) {
T *m,*n;
m=(T *)a;
n=(T *)b;
if((*m).sum>(*n).sum) return 1;
if((*m).sum<(*n).sum) return -1;
return 0;
}
int main() {
读入数据
qsort((void *)data,10,sizeof(T),cmp);
}
----------------解决方案--------------------------------------------------------
  相关解决方案