结构体排序
Posted jyssh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体排序相关的知识,希望对你有一定的参考价值。
sort的使用
1.对数组进行从小到大排序
sort(a,a+n);//对数组下标0到下标n-1进行从小到大排序
sort(a+1,a+1+n); //对数组下标1到下标n进行从小到大排序
2.cmp自定义比较函数实现自定义排序
bool cmp1(int a,int b)return a>b; bool cmp2(int a,int b)return a<b; sort(a+1,a+1+n,cmp1);对a下标1到n进行从大到小排序 sort(a+1,a+1+n,cmp2);对a下标1到n进行从小到大排序
3.cmp自定义比较函数实现自定义结构体排序
C语言结构体排序
求问各位dalao
typedef struct
char thread_name[3];
unsigned int require_moment;
unsigned int persist_time;
TEST_INFO;
TEST_INFO test_data[]=
"r1",0,3,
"r2",1,6,
"w1",3,5,
"r3",2,5,
"w2",5,5,
"w3",4,5,
"r4",7,5,
"r5",9,5,
"w4",8,5,
"w5",12,5
;
要求对require_moment从小到大进行排序,然后输出排序后的thread_name,应该怎么做
代码如下:
typedef struct
char thread_name[3];
unsigned int require_moment;
unsigned int persist_time;
TEST_INFO;
TEST_INFO test_data[] =
"r1", 0, 3 ,
"r2", 1, 6 ,
"w1", 3, 5 ,
"r3", 2, 5 ,
"w2", 5, 5 ,
"w3", 4, 5 ,
"r4", 7, 5 ,
"r5", 9, 5 ,
"w4", 8, 5 ,
"w5", 12, 5
;
int main()
int i, j, size;
TEST_INFO temp;
// 数组元素个数
size = 10;
// 排序
for (i = 0; i < size - 1; i++)
for (j = i + 1; j < size; j++)
if (test_data[i].require_moment > test_data[j].require_moment)
memcpy(&temp, &test_data[i], sizeof(TEST_INFO));
memcpy(&test_data[i], &test_data[j], sizeof(TEST_INFO));
memcpy(&test_data[j], &temp, sizeof(TEST_INFO));
// 输出
for (i = 0; i < size; i++)
printf("%s ", test_data[i].thread_name);
printf("\\n");
return 0;
运行结果:
直接调用test_data[i].require_moment,就变成数字之间的比较大小
可以使用简单的冒泡排序,然后记下排序后数组的下标,依次输出 参考技术B #include<stdio.h>
typedef struct
char thread_name[3];
unsigned int require_moment;
unsigned int persist_time;
TEST_INFO;
TEST_INFO test_data[]=
"r1",0,3,
"r2",1,6,
"w1",3,5,
"r3",2,5,
"w2",5,5,
"w3",4,5,
"r4",7,5,
"r5",9,5,
"w4",8,5,
"w5",12,5
;
int main()
int i,j;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(test_data[i].require_moment>test_data[j].require_moment)
TEST_INFO t=test_data[i];
test_data[i]=test_data[j];
test_data[j]=t;
for(i=0;i<10;i++)
printf("%s %d %d\\n",test_data[i].thread_name,test_data[i].require_moment,test_data[i].persist_time);
追问
这是冒泡排序吗?
追答对,你也可以用其它排序方式,这个不影响结果
本回答被提问者采纳以上是关于结构体排序的主要内容,如果未能解决你的问题,请参考以下文章