当前位置: 首页 > 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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Go语言 切片slice
  • mindspore打卡22天之基于MindSpore通过GPT实现情感分类
  • Java---SpringBoot详解一
  • 6.S081的Lab学习——Lab11: Network
  • echarts使用自定义图形实现3D柱状图
  • (day18) leetcode 204.计数质数
  • 如何在idea安装git,使用gitee?
  • Pip换源:加速Python包安装的神操作,你get了吗?
  • Python与自动化脚本编写
  • 7.16做题总结
  • 昇思25天学习打卡营第19天|基于MobileNetv2的垃圾分类
  • LabVIEW阀门运动PCT测试
  • Knife4j的原理及应用详解(五)
  • [图解]SysML和EA建模住宅安全系统-14-黑盒系统规约
  • Python爬虫速成之路(2):爬天气情况
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Angular4 模板式表单用法以及验证
  • CAP理论的例子讲解
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Magento 1.x 中文订单打印乱码
  • oldjun 检测网站的经验
  • Python - 闭包Closure
  • Rancher如何对接Ceph-RBD块存储
  • React系列之 Redux 架构模式
  • Spring核心 Bean的高级装配
  • Transformer-XL: Unleashing the Potential of Attention Models
  • v-if和v-for连用出现的问题
  • vue学习系列(二)vue-cli
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 入门级的git使用指北
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 移动端唤起键盘时取消position:fixed定位
  • ![CDATA[ ]] 是什么东东
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (1)Android开发优化---------UI优化
  • (30)数组元素和与数字和的绝对差
  • (6)STL算法之转换
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (ZT)一个美国文科博士的YardLife
  • (二开)Flink 修改源码拓展 SQL 语法
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (四)React组件、useState、组件样式
  • (学习日记)2024.01.19
  • (转)C#调用WebService 基础
  • (转)http-server应用
  • (转)winform之ListView
  • (转)德国人的记事本
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET BackgroundWorker
  • .Net Web项目创建比较不错的参考文章
  • .NET微信公众号开发-2.0创建自定义菜单