当前位置: 首页 > news >正文

C语言之qsort函数

一、qsort

1.库函数qsort

qsort是库函数,直接可以用来排序数据,底层使用的是快速排序。

qsort函数可以排序任意类型的数据。

2.头文件

#include<stdlib.h>

3.参数讲解

 

void*类型的指针是无具体类型的指针,这种类型的指针的不能直接解引用,也不能进行加减整数的运算,它的作用是接收任何类型的地址。

 二、qsort函数排序整型数据

#include<stdio.h>
#include<stdlib.h>
int int_cmp(const void* p1, const void* p2)
{//第一种方式//if (*(int*)p1 > *(int*)p2)//	return 1;//else if (*(int*)p1 == *(int*)p2)//	return 0;//else//	return -1;//第二种方式return (*(int*)p1 - *(int*)p2);
}
int main()
{int arr[10] = { 2,4,6,8,0,9,7,5,3,1 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(int), int_cmp);for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}

三、qsort函数排序结构体数据

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Stu
{char name[20];int age;
};
//按照年龄比较
int cmp_stu_by_age(const void* p1, const void* p2)
{return ((struct Stu*)p1)->age - ((struct Stu*)p2)->age;
}
//按照名字比较
int cmp_stu_by_name(const void* p1, const void* p2)
{return strcmp(((struct Stu*)p1)->name, ((struct Stu*)p2)->name);
}
//按照年龄比较
void test1()
{struct Stu s[] = { {"zahngsan",20},{"lisi",30},{"wangwu",15} };int sz = sizeof(s) / sizeof(s[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_by_age);for (int i = 0; i < sz; i++){printf("%d ", s[i].age);}printf("\n");
}
//按照名字比较
void test2()
{struct Stu s[] = { {"zahngsan",20},{"lisi",30},{"wangwu",15} };int sz = sizeof(s) / sizeof(s[0]);qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);for (int i = 0; i < sz; i++){printf("%s ",s[i].name);}printf("\n");
}
int main()
{test1();test2();return 0;
}
http://www.lryc.cn/news/400494.html

相关文章:

  • R 数据重塑
  • opencascade AIS_InteractiveContext源码学习8 trihedron display attributes
  • 【云岚到家】-day05-6-项目迁移-门户-CMS
  • linux彻底卸载docker
  • linux高级编程(网络)(www,http,URL)
  • Perl 语言开发(十三):网络编程
  • Leetcode算法题(移除链表中的元素)
  • 浅谈网络安全防守:从被动应对到主动管理的转变
  • CentOS7仅安装部署MySQL80客户端
  • 力扣经典题目之->移除值为val元素的讲解,的实现与讲解
  • pico+unity3d项目配置
  • python条件
  • 华为USG6000V防火墙v1
  • Apache访问机制配置
  • 在word中删除endnote参考文献之间的空行
  • 【详解】Spring Cloud概述
  • 板级调试小助手(3)基于PYNQ的OLED视频显示
  • git批量删除本地包含某字符串的特定分支
  • Android中RecyclerView使用详解(一)
  • 坑3.上传图片(阿里云空间,oss验证)(未验证)
  • 注册登录后上传文件到本地数据库项目
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十三)-更换无人机控制器
  • react 组件通信 —— 父子传值 【 函数式/类式 】
  • 【SpringBoot】95、SpringBoot中使用MyBatis-Plus实现自动加密存储和查询自动解密
  • [数仓]十二、离线数仓(Atlas元数据管理)
  • 机器学习——决策树(笔记)
  • 翁恺-C语言程序设计-08-1. 求一批整数中出现最多的个位数字
  • ROM修改进阶教程------深度解析小米设备锁机型不解锁bl 刷写特殊类固件的步骤
  • 论文翻译 | LEAST-TO-MOST: 从最少到最多的提示使大型语言模型中的复杂推理成为可能
  • 【区块链 + 智慧政务】都江堰区块链公共服务应用平台 | FISCO BCOS应用案例