资讯专栏INFORMATION COLUMN

2021-09-06

Ocean / 2967人阅读

摘要:二函数的使用实例函数排序一个整形数组代码如下示例函数排序一个结构体代码如下示例张三李四王五用冒泡排序函数排序模拟一个函数代码如下示例

标题

qsort函数


qsort函数的简单介绍与使用

提示:以下是本篇文章正文内容,下面案例可供参考

一、qsort函数原型

void qsort(     void *base,     size_t num,     size_t size,     int(*cmp)(const void*,const void *)     );

头文件:

函数功能:qsort()函数的功能是对数组进行排序,数组有num个元素,每个元素大小为size。

参数base : base指向数组的起始地址,通常该位置传入的是一个数组名。

参数num :num表示该数组的元素个数

参数size :size表示该数组中每个元素的大小(字节数)

参数(*cmp)(const void *, const void *):此为指向比较函数的函数指针,决定了排序的顺序。

函数返回值:无

注意:如果两个元素的值是相同的,那么他们两个的前后顺序排列是不确定的。

二、qsort函数的使用实例

1.qsort函数排序一个整形数组

代码如下(示例):

#include#includeint cmp_by_num(const void*e1,const void*e2){	return *(int*)e1 - *(int*) e2;}void Print(int* p, size_t sz){	size_t i = 0;	for (i = 0; i < sz; i++)	{		printf("%d", *(p + i));	}	printf("/n");}int main(){	int arr[] = { 1,2,6,9,8,5,7,4,3};	size_t sz = sizeof(arr) / sizeof(arr[0]);	qsort(arr, sz, sizeof(arr[0]), cmp_by_num);	Print(arr, sz);}

2.qsort函数排序一个结构体

代码如下(示例):

#include#includestruct Stu{	char name[20];	int age;};int cmp_by_name(const void* e1, const void* e2){	return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);};void Print(struct Stu* p, int sz){	int i = 0;	for (i = 0; i < sz; i++)	{		printf("%s/t%d/n", p[i].name, p[i].age);	}};int main(){	struct Stu s[3] =	{		{"张三",13},		{"李四",14},		{"王五",15}	};	size_t sz = sizeof(s) / sizeof(s[0]);	qsort(s, sz, sizeof(s[0]), cmp_by_name);	Print(s, sz);}

3.用冒泡排序函数排序模拟一个qsort函数

代码如下(示例):

#include#includeint cmp_by_num(const void* e1, const void* e2){	return *(int*)e1 - *(int*)e2;}void Swap(char* e1, char* e2, size_t width){	size_t i = 0;	for (i = 0; i < width; i++)	{		char tmp = *e1;		*e1 = *e2;		*e2 = tmp;		e1++;		e2++;	}}void BubbleSort(void* base, size_t num, size_t width, int (*cmp)(const void*, const void*)){	size_t i = 0;	for (i = 0; i < num - 1; i++)	{		size_t j = 0;		for (j = 0; j < num - i - 1; j++)		{			if (cmp((char*)base + j * width, (char*)base + (j + 1) * width) > 0)			{				Swap((char*)base + j * width, (char*)base + (j + 1) * width,width);			}		}	}}void Print(int* p, size_t sz){	size_t i = 0;	for (i = 0; i < sz; i++)	{		printf("%d", *(p + i));	}	printf("/n");}int main(){	int arr[] = { 5,9,6,8,7,4,1,2,3 };	size_t sz = sizeof(arr) / sizeof(arr[0]);	BubbleSort(arr, sz, sizeof(arr[0]), cmp_by_num);	Print(arr, sz);}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119402.html

相关文章

  • 行业报告 | 2021.10.06 | 研报目录更新

    大家好,我们每天全网搜集各行各业的研究报告,了解一个行业从阅读这个行业的研报开始,今日分享目录如下: 20211006分享目录: 2021抖音电商商家经营方法论白皮书-34页.pdf 2021中国数据智能产业发展研究报告-50页.pdf 2021公益数字化转型-56页.pdf 2021年中国一线城市出行平台调研报告-77页.pdf 2021年中国内容机构(MCN)行业发展研究报告-66页.pd...

    dinfer 评论0 收藏0
  • 行业报告 | 2021.09.06 | 研报目录更新

    摘要:参一江湖只作为内容整理方,仅供学习使用。更多相关报告请查看参一江湖星球。 大家好,我们每天全网搜集各行各业的研究报告,了解一个行业从阅读这个行业的研报开始,今日分享目录如下: 20210906分享目录: 2021中国车险科技创新服务研究报告-45页.pdf 2021年中国家装行业数字化研...

    junfeng777 评论0 收藏0
  • 2021-09-06_address_list(通讯录)

    摘要:通讯录今天我们内容是一个小项目通讯录的实现首先,我先思考一下,一个通讯录,它应该具有哪些功能。说到通讯录,我们可以打开手机的通讯录,观察一番。为了防止我们忘记数字,代表的是那项功能。 ...

    王笑朝 评论0 收藏0
  • 行业报告 | 2021.09.28 | 研报目录更新

    大家好,我们每天全网搜集各行各业的研究报告,了解一个行业从阅读这个行业的研报开始,今日分享目录如下: 20210928分享目录: 休闲娱乐行业主题研究:本地出行,众彩纷呈-35页.pdf 休闲服务行业海南折扣观察第一期:SKU较少的GDF折扣小幅加大,其他公司相对稳定-14页.pdf 传媒行业2021年中期策略报告:从流量到留量,抓住年轻人、拥抱视频化、提升专业化-30页.pdf 传媒行业深度...

    LancerComet 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<