库函数 qsort 的用法
qsort是一个库函数
基于快速排序算法实现的一个排序的函数
语法
void qsort(
void *base,
size_t number,
size_t width,
int(*cmp)( const void* e1 , const void* *e2)
);
参数
base
目标数组的函数。
number
元素中的数组大小。
width
元素大小(字节)。
cmp
指向用户提供的例程的指针比较两个数组元素,并返回指定它们关系的值。
注解
qsort
在排序过程中一次或多次调用cmp
例程,并将指针传递给每个调用中的两个数组元素。 如果cmp
表示两个元素相同,则它们在生成的排序数组中的顺序是数组按比较函数中定义的升序进行排序。 若要以降序对数组进行排序,请反转比较函数中的“大于”和“小于”的意义,即 e1和e2调换
比较函数返回值 |
说明 |
---|---|
<0 | e1<e2 |
0 | e1=e2 |
>0 | e1>e2 |
规定
头文件 <stdlib.h>
示例
1,模仿qsort的功能实现一个通用的冒泡排序
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>void print_arr(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}
}
int cmp_int(const void* e1, const void* e2)
{return (*(int*)e1 - *(int*)e2);
}void test2()
{int arr[] = { 9,8,7,6,5,4,3,2,1,0 };//排序为升序int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_int);print_arr(arr, sz);
}int main()
{test2();return 0;
}void qsort(void* base, size_t num, size_t width, int(*cmp)(const void* e1, const void* e2));
2.使用库函数,qsort排序各种类型的数据
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stu
{char name[20];int age;double score;
};//int cmp_stu_by_age(const void* e1, const void* e2)
//{
// return ((struct stu*)e1)->age - ((struct stu*)e2)->age;
//}int cmp_stu_by_name(const void* e1, const void* e2)
{return strcmp( ((struct stu*)e1)->name , ((struct stu*)e2)->name );
}void test3()
{struct stu arr[3] = { {"zhangsan",20,55.5},{"lisi",30,88.0},{"zhaowu",10,90.0} };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp_stu_by_name);}void swap(char* buf1, char* buf2, int width)
{int i = 0;for (i = 0; i < width; i++){char tmp = *buf1;*buf1 = *buf2;*buf2 = tmp;buf1++;buf2++;}
}int main()
{test3();return 0;
}
void qsort(void* base, size_t num, size_t width, int(*cmp)(const void* e1, const void* e2));
库函数 qsort 的用法相关推荐
- C语言,库函数中qsort的用法,及解释
C语言库函数qsort的使用 目录 C语言库函数qsort的使用 qsort简介 原理: 函数原形及逐步分析 一:格式 二:分段解析 代码示例 总结 qsort简介 大家都知道冒泡排序,但是却排序有一 ...
- C语言标准库函数qsort( )——数据排序
大家好!我是保护小周ღ,本期为大家带来的是深度解剖C语言标准库函数 qsort(),qsort()函数他可以对任意类型的数据排序,博主会详细解释函数使用方法,以及使用快速排序的左右指针法模拟实现函数功 ...
- qsort函数用法详解
qsort()函数用法详解 limabean 本文版权归作者所有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利. 1.qsort函数简介 排序是程序员经常碰到的问题, ...
- qsort()的用法
文章目录 1 qsort()的用法 1.1 qsort()函数原型 1.2 qsort()示例代码 1 qsort()的用法 1.1 qsort()函数原型 #include <stdlib.h ...
- C库函数qsort七种使用方法示例
这篇文章是 一楼那个学长写的 C库函数qsort七种使用方法示例 七种qsort排序方法<本文中排序都是采用的从小到大排序> 一.对int类型数组排序 C++代码 int num[10 ...
- 【C语言】qsort函数用法(转)
qsort函数用法 qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(cons ...
- java double 排序_转载:qsort细节用法,double型的排序我竟然一直用错了~~~
转载:qsort细节用法,double型的排序我竟然一直用错了--- (2010-11-26 18:16:43) 标签: 杂谈 分类: 转载 在对浮点或者double型的一定要用三目运算符,因为如果也 ...
- C语言 qsort的用法 模拟EXCEL排序
C语言 qsort的用法 模拟EXCEL排序 题目 Excel可以对一组记录按任意指定列排序.现请编写程序实现类似的功能. 输入 输入的第一行包含两个正整数N(<= 10^5)和C,其中N是记录 ...
- 【C语言】库函数qsort的使用
一.回调函数 二.库函数qsort 三.使用qsort排序整型数组 四.使用qsort排序结构体 1.使用qsort排序结构体中的字符成员 2.使用qsort排序结构体中的整型成员 五.基于冒泡排序的 ...
最新文章
- 提高班第三周周记(中秋第一天)
- 分类模型的性能评价指标(Classification Model Performance Evaluation Metric)
- this、new、模式工厂、创建新的构造函数
- JPA J2SE 桌面应用范例
- python画有权重网络图_使用Python的networkx绘制精美网络图教程
- Gprmax 三维地质雷达建模及在 paraview 中的可视化
- NotImplementedError: Cannot convert a symbolic Tensor报错与解决
- (28)FPGA面试题寄生效应
- python适合自学编程吗-对没有编程基础的人来说,直接学Python入门IT合适吗?
- Android图像办理组件
- Win10 默认输入变全角问题解决方法
- Android开发技术学习之下拉刷新功能的实现
- PGN: 指针生成网络(Get To The Point: Summarization with Pointer-Generator Networks)
- Unity 角色慢动作
- Work20230417
- PDF电子发票内容提取
- 微信小程序开发者工具error:用户绑定的手机需要进行验证,请在客户端完成短信验证
- java 大量数据保存_使用Java保存大量数据的最佳实践
- PNAS:问微生物群落演替之随机性与确定性过程-谁主沉浮
- 英雄联盟 + 头盔检测数万张数据+检测模型 放送