重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
代码如下:
成都创新互联公司是一家专注于网站建设、成都做网站与策划设计,建水网站建设哪家好?成都创新互联公司做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:建水等地区。建水做网站价格咨询:18980820575
#includestdio.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, 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;
}
运行结果:
就是排序问题嘛,跟结构体有啥关系?
比较结构体中的shu成员啊
冒泡排序的核心代码如下:
struct student ss[20],t;
for(i=0;i20-1;i++)
{
for(j=20-1;ji;j--)
{
if(ss[j].shu ss[j-1].shu)
{
t=ss[j];
ss[j]=ss[j-1];
ss[j-1]=t;
}
}
}
补充:
只需要在交换的时候,按整个结构体换,就行了啊
下面交换代码中的t和ss都是结构体啊
struct student ss[20],t;
t=ss[j];
ss[j]=ss[j-1];
ss[j-1]=t;
设结构体名为AAA,结构体数组声明为struct AAA a[N];(N为宏定义常量),身份证成员名为id,则排序函数可如下写——
#include "stdio.h"
#include string.h
#define N 3
struct AAA{
char id[20];
int age;
};
void mysort(struct AAA *p){//排序函数
struct AAA t;
int i,j,k;
for(i=0;iN;i++){
for(k=i,j=k+1;jN;j++)
if(strcmp((p+j)-id,(p+k)-id)0)
k=j;
if(i!=k)
t=*(p+k),*(p+k)=*(p+i),*(p+i)=t;
}
}
int main(int argc,char *argv[]){//测试主函数
struct AAA a[N]={{"650104194812109907",77},{"333018201801015555",1},{"650104194812109903",80}};
mysort(a);
printf("%s\t%d\n",a[0].id,a[0].age);
printf("%s\t%d\n",a[1].id,a[1].age);
printf("%s\t%d\n",a[2].id,a[2].age);
return 0;
}
运行结果: