c语言结构体用函数排序 c语言结构体快速排序

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语言 结构体如何排序由于你只是交换字符串,所以修改如下 , 请检验 。
定义一个字符串数组char sn[10];
【c语言结构体用函数排序 c语言结构体快速排序】交换时进行如下修改
strcpy(sn,library.book[k].number);
strcpy(library.book[k].number,library.book[i].number);
strcpy(library.book[i].number,sn);
用strcpy(s1,s2)进行复制字符串,不能直接s1=s2 。
#includestdio.h
#include time.h
typedef struct
{
char number[10];//书号
char name[50];//书名
char author[20];//作者
char publish[50];//出版社
char time[20];//出版时间
float price;//单价
}mbook;
typedef struct
{
int count;//书的本数
mbook book[10];//最大可有书的数量
}mlibrary;
mlibrary library,t;
main()
{ void sort_by_price(void);
sort_by_price();
}
void sort_by_price(void)/*定义按价格排序函数*/
{
int i,j,k;
char sn[10];
for(i=0;ilibrary.count-1;i)
{
k=i;
for(j=i 1;jlibrary.count;j)
if(library.book[j].pricelibrary.book[k].price)
k=j;
if(k!=i)
{
strcpy(sn,library.book[k].number);
strcpy(library.book[k].number,library.book[i].number);
strcpy(library.book[i].number,sn);
}
}
} ;
C语言如何将结构体中的所有成员按照其中一个成员的排序方式输出?将结构体数组SI[MAX]使用排序算法然后输出即可 。
以下给题主列出对SI[MAX]的冒泡排序代码:
void bubbleSort(struct Salary_Info arr[], int len) {
int i, j
struct Salary_Info temp;
for (i = 0; ilen - 1; i)
for (j = 0; jlen - 1 - i; j)
if (arr[j]arr[j1]) {
temp = arr[j];
arr[j] = arr[j1];
arr[j1] = temp;
}
}
调用bubbleSort函数:
bubbleSort(SI, MAX) /*注意这里的MAX需要换成实际的数组长度(职工人数)*/
C语言,结构体快排自定义一个比较函数,直接调用快排库函数qsort即可 。举例如下:
//#include "stdafx.h"//If the vc6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
struct ln{
int data,score,math;
}ss[100];
int mycmp(const void *a, const void *b){//自定义比较函数
return ((struct ln*)a)-data-((struct ln*)b)-data;//若要降序,-号前后变量交换
}//data改为score或math就可按相应要素排序
int main(void){//测试一下……
int i;
srand((unsigned)time(NULL));
for(i=0;i100;ss[i].data=https://www.04ip.com/post/rand()00);
qsort(ss,100,sizeof(struct ln),mycmp);
for(i=0;i100;printf("M",ss[i].data));
printf("\n");
return 0;
}
csort 函数能对类或者结构体进行排序吗csort 函数可以对类或者结构体进行排序:
里面有个参数,可以用:
1、sort(a,'ascend')%升序
2、sort(a,'descend')%降序;
3、a为向量或数组. 也可以这样:先对a求相反数,成-a,然后升序,然后再求相反数.(这只是很简单的数学技巧!在编程时相当有用!)
4、如果你是C语言,我记得没有函数.你可以自己写.用一些排序算法实现.
关于c语言结构体用函数排序和c语言结构体快速排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读