首页 > 其他分享 >qsort的使用方式示例

qsort的使用方式示例

时间:2023-03-12 11:32:19浏览次数:33  
标签:方式 示例 int void qsort pb arr3 sizeof

(数组首元素地址,数组元素个数,数组中每个元素的大小,函数指针-比较两个元素所用函数的地址)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//结构体
struct stu{
char name[20];
int age;
};
//整型比较方式
int cmp_int(const void* pa, const void* pb) {
return (*(int*)pa - *(int*)pb);
}
//浮点型比较方式
int cmp_float(const void* pa, const void* pb) {
return (*(float*)pa - *(float*)pb);
}
//结构体比较方式--年龄
int cmp_con(const void* pa, const void* pb) {
return (((struct stu*)pa)->age - ((struct stu*)pb)->age);
}
//结构体比较方式--名称
int cmp_coname(const void* pa, const void* pb) {
return (strcmp(((struct stu*)pa)->name , ((struct stu*)pb)->name));
}
//整型打印
void print1(int arr[],int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%d ", *(arr + i));
}
printf("\n");
}
//浮点型打印
void print2(float arr[], int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%f ", arr[i]);
}
printf("\n");
}
//结构体打印
void print3(struct stu *arr,int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%s ", (arr+i)->name);
}
printf("\n");
}
int main() {
int i = 0;
//整型
int arr1[] = { 9,8,7,6,4,5,1,2,3 };
int sz1 = sizeof(arr1) / sizeof(arr1[0]);
//浮点型
float arr2[] = { 9.0,8.0,7.0,6.0,5.0 };
int sz2 = sizeof(arr2) / sizeof(arr2[0]);
//结构体
struct stu arr3[] = { {"liming",20},{"lishui",25},{"zhangneng",15} };
int sz3 = sizeof(arr3) / sizeof(arr3[0]);
//整型qsort的使用
qsort(arr1, sz1, sizeof(arr1[0]), cmp_int);
print1(arr1,sz1);
//浮点型qsort的使用
qsort(arr2, sz2, sizeof(arr2[0]), cmp_float);
print2(arr2, sz2);
//结构体qsort的使用
qsort(arr3, sz3, sizeof(arr3[0]), cmp_con);//年龄的比较
print3(arr3, sz3);

qsort(arr3, sz3, sizeof(arr3[0]), cmp_coname);//名字的比较
print3(arr3, sz3);


return 0;
}

标签:方式,示例,int,void,qsort,pb,arr3,sizeof
From: https://blog.51cto.com/u_13606048/6115637

相关文章

  • Ubuntu桌面新建快捷方式
    在Ubuntu系统中,一般而言softeware都安装在opt文件夹中,每次启动这些softeware,都需要在终端中键入cd/opt才能开始启动这些sofeware对于刚从windows转来的我而言,诸多不适…......
  • Android 关于WebView加载完成的多种监听方式
    第一种方式:setWebViewClient()>>>>>>onPageFinished()缺点是6.0以上手机只会调用响应一次,如下:mWebView.setWebViewClient(newWebViewClient(){@Override......
  • MyBatisPlus条件构造器实现降序排序的两种方式
    实现方式一:使用orderByDesc()方法List<Employee>employeeList=employeeMapper.selectList(newEntityWrapper<Employee>().eq("gender",1).like("name","霸")......
  • 1_使用Mapper代理方式实现查询
     项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;/***@Author:......
  • 1_使用Mapper代理方式实现查询
     项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;/***@Author:......
  • SpringCloud-创建服务消费者-Feign方式(附代码下载)
    场景在上面已经实现服务注册中心、服务提供者和以Ribbon方式实现服务消费者的前提下,使用另一种Feign方式实现服务消费者。FeignFeign是一个声明式的伪Http客户端,它使得写......
  • 1_使用Mapper代理方式实现查询
    ​ 项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;......
  • 1_使用Mapper代理方式实现查询
    ​ 项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;......
  • VB6.0window消息处理方式
    AttributeVB_Name="Module1"OptionExplicitPublicConstWM_NCHITTEST=&H84'移动鼠标,按住或释放鼠标时产生此消息PublicConstHTCAPTION=2'不返回给系统Public......
  • Qt音视频开发23-视频绘制QPainter方式(占用CPU)
    一、前言采集到的图片,用painter绘制是最基础的方式,初学者可能第一次尝试显示图片用的qlabel的setpixmap,用下来会发现卡成屎,第二次尝试用样式表设置背景图,依然卡成屎,最终选......