C++ qsort的理解
qsort是一个库函数
头文件是<stdlib.h>
普通的排序如数组中冒泡排序只能排序整型
而qsort函数可以排序任意的类型
qsort的基本类型
void qsort(
void *base,//star of target array(数组的起始位置)
size_t num,//Array size in elements数组的大小 单位:元素
size_width,//数组每个元素的大小
int( *compare)(const void*elem1 ,constvoid*elem2) //函数指针指向函数
)
用qsort 排序整型数组
int cmp_int(const void*elem,const void*elem2)//类型必须为void 因为void*是可以所有类型的指针
{return *(int*)e1-*(int*)e2//compare的规定是e1>e2返回1 小于返回-1 等于返回 0}void test()
{int arr[10] = { 10,9,8,7,6,5,4,3,2,1 };int sz = sizeof(arr) / sizeof(arr[0]);//求出数组的所占空间大小qsort(arr,sz,sizeof (arr[0]),cmp_int);//arr是数组名,代表数组的首原元素地址
sz是数组的大小 sizeof(arr[0])是代表数组每一个元素大小 cmp_int是用来对应compare(比较)来实现其排序功能的自定义函数int i;for( i=0;i<10;i++){printf("%4d", arr[i]);}
}int main()
{test();return 0;
}
字符型
int tmp_float(const void*e1, const void*e2)
{/*if (*(float*)e1 >*(float*) e2){return 1;}else if (*(float*)e1 == *(float*)e2){return 0;}else{return -1;}*/return * (float*)e1 > * (float*)e2;
}void test()
{float f[] = {5.0, 4.0, 3.0, 2.0};float es = sizeof(f) / sizeof(f[0]);qsort(f, es, sizeof(f[0]),tmp_float);int j;for (j = 0; j < es; j++){printf("%8f", f[j]);}
}int main()
{test();
}
结构体
typedef struct stu
{char name[20];int age;
}stu;int tmp_struct_age(const void*e1,const void*e2)
{return ((struct stu*)e1)->age - ((struct stu*)e2)->age;
}void test3()
{stu s[3] = { {"张三",18},{"李四",60},{"王五",24}};int sm = sizeof(s) / sizeof(s[0]);qsort(s,sm,sizeof(s[0]),tmp_struct_age);int j;for (j = 0; j < sm; j++){printf("%8d", s[j].age);}}
int main()
{test();
return 0;
}
C++ qsort的理解相关推荐
- C语言qsort排序
1 qsort原理介绍 函数原型: void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, con ...
- Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language
Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language 1.2.2. 基本 ...
- 【排序】什么都能排的C语言qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序
[排序]什么都能排的C语言qsort排序详解[超详细的宝藏级别教程]深度理解qsort排序 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客之前,博主在这里 ...
- qsort函数的理解和使用
目录 qsort函数 cmp函数的自定义 主函数 排序int类型代码 排序结构体 排序结构体的总代码(供读者测试) qsort函数 qsort函数是<stdlib.h>库函数中的,基于快速 ...
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
- 64位程序怎么判断指针是否有效_C 语言指针怎么理解?
注: 看完这篇一定会让你理解透彻指针的本质 是的,这一篇的文章主题是「指针与内存模型」 说到指针,就不可能脱离开内存,学会指针的人分为两种,一种是不了解内存模型,另外一种则是了解. 不了解的对指针的理 ...
- qsort与sort()
int cmp(const void *a, const void *b) /** 关于快排函数的一些说明 **qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qso ...
- 七、排序(4)——qsort()
一.回顾 时间复杂度 是稳定排序 是原地排序 冒泡排序 O(n2) √ √ 插入排序 O(n2) √ √ 选择排序 O(n2) × √ 快速排序 O(nlogn) × √ 归并排序 O(nlogn) ...
- sort qsort的区别
qsort 更为通用,但是比较慢,比较函数相当难理解 sort 快,比较函数好理解 下面的实验室要a降序排列 int qCmp(const void * a,const void *b) {int a ...
最新文章
- SQL Server-聚焦什么时候用OPTION(COMPILE)呢?
- 交通工程专业的计算机论文,交通工程(毕业论文).doc
- 家门口的医疗新体验,网易云信携手嘉虹健康打造互联网医院新场景
- bootstrap学习(五)代码
- activity中指定一页面动态设置软键盘弹出属性
- arm汇编—str,mov等指令
- 吊打面试官之redis篇:一文全懂redis
- 2.4GHz频段天线的选择
- iOS 如何找到或生成 .dSYM 文件
- debian dos2unix
- Linux 命令大全
- 关于word中插入的mathtype公式变形问题的解决方案
- Sicily 1001. Alphacode
- 关键应用在超融合环境下的实践
- Spring的注解@Bean
- 两个led并联和一个电阻串联两个灯不能同时亮问题
- 编写js代码的注意问题
- OC 教程 极光分享
- Android模拟器(windows(蓝叠,Virutalbox……) + linux (ARChon……)+ 移动设备(vmos……))
- 成都速领科技:如何做好短视频