qsort vs sort
qsort__词典
sort__排队III
//
先说结论:01 sort 参数少 写 cmp 函数也方便
02 qsort 对于 cmp 函数 返回值 做出的反应 有些特殊( 详细看下文 )
03 默认 都是 升序 排序 ( 所以才会出现02要点 )
04 cmp 函数返回值不同 ( sort bool :qsort int )
05 效率...
//
sort ( void *begin, void *end, bool *cmp );01 头文件 #include<algorithm> 或 #include<bits/stdc++.h>02 参数:begin:指向 待排序数组的 第一个元素的指针end:指向 待排序数组的 最后一个元素的 "下一个位置"的指针cmp:指向 排序规则函数的 函数指针 ( 省略此参数时"默认为升序排序" )03 返回值:bool cmp( void a,void b ){if( 符合我们的排序需求 ) return true;else return false;}(1) true a 被排在 b 前面(2) false 对 a 与 b 的次序 不做改变eg:降序排序bool my_cmp(int a, int b)
{if( a>b ) return true;else return false;
}
//
void qsort( void *arr, int n, int size, int (*cmp)(const void *, const void *) );01 头文件:#include<stdlib.h> 或 #include<bits/stdc++.h>02 功能:对数组进行排序,数组有n个元素,每个元素大小为size。03 参数:(1)arr:指向数组的起始地址,通常该位置传入的是一个数组名。(2)n:该数组的 元素个数(3)size:该数组中 每个元素的大小( 一般用sizeof()表示 )(4)int (*cmp):指向比较函数的函数指针,决定排序顺序04 qsort返回值:无05 注意:如果两个元素的值是相同的,那么它们的前后顺序是不确定的。( 不稳定 )06 int cmp (const void *p1, const void *p2); (1) 返回值<0 p1所指向元素 被排在 p2所指向元素的 前面(2) 返回值==0 p1所指向元素 与p2所指向元素的 顺序不确定(3) 返回值>0 p1所指向元素 被排在 p2所指向元素的 后面!!! 注意 (1)cmp 也是默认升序排序 但和 sort bool型比较函数 返回值做出的反应 有点小区别(2) 不同类型数据比较时:( "以下均为升序" )eg.
int cmp( const void *a,const void *b )
{01 int//当a<b时 会返回false ( 值为0 ) 会被qsort误认为二者相等 最终导致排序错误return *(int*)a>*(int*)b; (x)正确写法return *(int*)a-*(int*)b;或return ( *(int*)a ) > ( *(int*)b ) ? 1:-1 ;02 doublereturn ( *(double*)a ) > ( *(double*)b ) ? 1:-1 ;03 charreturn *(char*)a - *(int*)b ;04 字符串return strcmp( (char*)a,(char*)b ) ;05 结构体 ...}07 qsort 通常结合 bsearch 一起使用bsearch()函数二分查找:bsearch(const void *key, const void *arr, int num, int size, int (*cmp) (const void *, const void *));01 功能:在目标数组中找所求数据02 头文件:<stdlib.h>03 参数:(1) key 指向要查找的元素 的指针 ( 找谁 )(2) arr 指向进行查找的 目标数组 ( 在哪找 )(3) num 数组中元素的个数 ( 找的地方有多少组数据 )(4) size 数组中每个元素的大小,一般用sizeof()表示 ( 那个地方的单个数据大小是多少 )(5) cmp 比较两个元素的函数,定义比较规则 ( 怎么找 )(自定义比较函数)04 返回值:查找成功,返回指向数组中匹配元素的指针 ; 否则返回NULL05 注意:多个元素匹配成功时,bsearch()未定义返回哪一个(不稳定)
qsort vs sort相关推荐
- qsort与sort()
int cmp(const void *a, const void *b) /** 关于快排函数的一些说明 **qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qso ...
- qsort()与sort的用法(收藏)
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...
- qsort与sort
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h&g ...
- 【慢慢学算法】:qsort()与sort的用法(收藏)
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...
- 排序函数qsort和sort那点事
目录 前言 qsort函数(c语言用) 各参数及其说明 qsort用法实例 sort函数(用于c++) sort模板及其参数说明 sort实例 注意 : 前言 咱们初学编程的可能最先接触的算法就是排序 ...
- VS qsort和sort函数
qsort函数功 能: 使用快速排序例程进行排序 头文件:stdlib.h 函数原型: void __cdecl qsort (void *base,size_t num,size_t width ...
- sort、qsort排序
1:qsort和sort只能对连续内存的数据进行排序,像链表map这样的结构是无法排序 2:qsort 示例 /* void qsort(void*base, // 待排序数组首地址 ...
- qsort函数、sort函数
目录 qsort 的使用方法: 一.对int类型数组排序 二.对char类型数组排序(同int类型) 三.对double类型数组排序(特别要注意) 四.对结构体一级排序 五.对结构体二级排序 六.对字 ...
- c语言sort函数包,qsort函数、sort函数【转】
http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...
最新文章
- 设计模式-策略模式,观察者模式,装饰者模式,静态工厂模式,工厂方法模式
- 认识实时动态测量技术
- git stage 暂存_什么是Git?下载和安装Git
- Boost:实现了k-means聚类算法
- C++11 POD类型
- 2017.3.22-morning
- spring mvc学习(20):RequestHeader(获取请求头中某一部分值)
- 企业实战_02_MyCat基本元素
- Lisp的永恒之道(转)
- java time schedule_Java Timer schedule疑问
- excel基础知识大全_测量常用软件大全
- 生物信息预测毒力因子
- Python接口自动化
- PayPal的钱如何提现?PayPal商家终于可以松口气了!
- AAAI 2020 | 清华大学:借助BabelNet构建多语言义原知识库
- 毕业设计开题分析:MIPS指令集硬件化设计与实现
- Altium Designer15安装破解教程
- 企业文化如何推动绩效?
- data mapping
- Html创建动画的基本过程,动画视频制作基本的流程