重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言排序函数结构体,C语言顺序结构

C语言结构体排序

代码如下:

成都创新互联公司是一家专注于网站建设、成都做网站与策划设计,建水网站建设哪家好?成都创新互联公司做网站,专注于网站建设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;

}

运行结果:

C语言结构体排序问题

就是排序问题嘛,跟结构体有啥关系?

比较结构体中的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;

C语言中结构体数据排序

设结构体名为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;

}

运行结果:


分享文章:c语言排序函数结构体,C语言顺序结构
路径分享:http://cqcxhl.com/article/hseheo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP