三九宝宝网宝宝教育教学论文

C语言关于结构体排序要用qsort

02月22日 编辑 39baobao.com

[C语言结构体排序]// Sortofstruct.cpp : 定义控制台应用程序的入口点。 //c语言结构体冒泡排序 #include "stdafx.h" #include <stdio.h> #include "windows.h" #define MAX 10struct student { i...+阅读

排序方法有很多种, 选择排序,冒泡排序,归并排序,快速排序等。

看名字都知道快速排序 是目前公认的一种比较好的排序算法(我没听书速度比这快的了,特殊场合例外),比选择排序,冒泡排序都要快。这是因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。

这就是qsort。

qsort 要求提供一个 比较函数,是为了做到通用性更好一点。比如你不仅仅的是要排序一个数字而已,可能你要用来排序几个数字 ,比如有一个结构

struct num {

int a;

int b;

};

然后我有一个num 类型的数组, num dddd[100];

我想给 dddd这个数组排序,那怎么办? 我想让 a +b 最大的num元素排在数组的最前面,那又怎么办?

这都可以通过定义比较函数来做到的。

比较函数的作用就是给qsort指明 元素的大小是怎么比较的。

像这样的比较函数 inline int MyCmp(const void* a, const void* b)

都是有两个元素 作为参数,返回一个int 值, 如果 比较函数返回大于0,qsort就认为 a>b , 如果比较函数返回等于0 qsort就认为a 和b 这两个元素相等,返回小于零 qsort就认为 a

qsort 知道元素大小,就可以把大的放到前面去。

如果你的比较函数放回本来应该是1 的(a>b),你比较函数却返回一个 -1 (小于零的)那么qsort认为a

同样的道理,如果有一个 结构

strunt 人{

int 身高;

int 体重;

}

你想让身高最小的人排在最前面,那么你也要自己定义自己的比较函数 ,

以下为关联文档:

C语言关于结构体排序void main() { struct goods temp; for(int i=0;i { for(int j=9;j>i;j--) { if(strcmp(good[j].id,good[j-1].id) { temp=good[j]; good[j]=good[j-1]; good[j-1]=temp; }...

C语言结构体排序问题由于你只是交换字符串,所以修改如下,请检验。 用strcpy(s1,s2)进行复制字符串,不能直接s1=s2。 #include #include typedef struct { char number[10];//书号 char name[50];//书...

C语言如何对结构体的不同成员排序还真是这样,当然,你可以做点手脚,牺牲下空间。比如在结构体里保存一个指向如何排序的引导,在比较函数里面再提取这个信息,判断是哪个字段,做什么比较。一般这种比较函数跟qsort一...

C语言编程结构体1. /*定义结构体类型*/ struct student {int num;//学号 char name[20];//姓名 char sex;//性别 int age;//年龄 char class[20];//班级 char phone[20];//电话 char addr[20];//住...

结构体的C语言中的结构体在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时...

c语言快速排序qsort函数你这个是c程序还是c++ c++的话类型要求比较严格 比较函数接受的参数类型应该是const void* c的话你main里函数原型的声明也不对啊,这样改一下 #include<stdlib.h> #include<s...

C语言关于qsort的问题为什么不能排序你的cmp()函数的的参数类型不正确,qsort()函数要求cmp()函数的形参必须是const void*类型的,而不是int类型,修改如下: //-------------------------------------------------------...

C语言qsort函数对char型strmn数组的排序// 这样写就OK啦。 int cmp(const void *a, const void *b) { char *aa = (char *) a; char *bb = (char *) b; return strcmp(aa,bb); } // const void *a是表示一个指向co...

c语言如何用qsort排序试想一下,如果让你自己设计qsort函数,需要些什么东西,首地址要有吧,总共有几个元素要有吧,每个元素占多大的内存要有吧(想想就知道函数内部要根据内存块的大小交换数据实现排序),最...

推荐阅读
图文推荐

所有作品版权归原创作者所有,与本站立场无关,

根据《信息网络传播权保护条例》,如果我们转

载的作品侵犯了您的权利,请尽快通知我们。