qsort和sort的区别_第1页
qsort和sort的区别_第2页
qsort和sort的区别_第3页
qsort和sort的区别_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.qsort功能:原型: void qsort (void * base,int nelem,int width,int (* fcmp) (const void *,const void *);函数:使用快速排序例程进行排序参数:1要排序的数组的第一个地址2数组中要排序的元素数3每个元素占用空间的大小4指向函数的指针,用于确定排序顺序说明:qsort函数在ANSI C标准中提供,在stdlib.h文件中声明,按照二分法编写,时间复杂度为n*log(n)。qsort所需的函数是一个需要自己定义的比较函数,这使得qsort更加通用。通过比较函数qsort,您可以按升序或降序对数组、字符串、结构

2、和其他结构进行排序。在int cmp中有两个元素作为参数(const void *a,const void *b)(参数的格式不能更改。)返回一个int值。如果比较函数返回大于0,qsort将考虑b,如果它返回小于0,qsort将考虑b。Qsort知道元素的大小,所以它可以将大的放在前面。如果您的比较函数在应该是1(即B)时返回-1(小于0的数字),那么qsort认为是B,所以它将B放在第一位,但它实际上是B,这就造成了降序的不同。简而言之,比较函数的功能是显示如何比较元素的大小。2.2.qsort中几种常见的cmp功能:首先,对整型数组进行排序int num100;int cmp(常量voi

3、d *a,常量void *b)返回*(int *)a-*(int *)b;qsort(num,100,sizeof(num0),cmp其次,对字符类型数组进行排序(与int类型相同)字符100;int cmp(常量void *a,常量void *b)返回*(char *)a-*(int *)b;qsort(word,100,sizeof(word0),cmp第三,对双型数组进行排序(特别注意)双入100;int cmp(常量void *a,常量void *b)返回*(double *)a *(double *)b?1 :-1;qsort(in,100,sizeof(in0),cmp第四,在第一

4、层对结构进行排序结构双重数据;其他;s100/根据数据值从小到大对结构进行排序。结构中有许多类型的排序关键数据。请参考上面的例子。int cmp(常量void *a,常量void *b)返回(*(In *)a)-数据(*(In *)b)-数据?1 :-1;qsort(s,100,sizeof(s0),cmp第五,结构在第二层排序结构int x;int y; s100;/按x从小到大排序,当x相等时,按y从小到大排序int cmp(常量void *a,常量void *b)结构In * c=(In *)a;结构In * d=(In *)b;if(c-x!=d-x)返回c-x - d-x。否则返回d

5、-y-c-y;qsort(s,100,sizeof(s0),cmp6.对字符串排序结构int数据;char字符串100; s100;/根据结构中字符串的字典顺序进行排序int cmp(常量void *a,常量void *b)返回字符串(*(In *)a)-字符串(*(In *)b)-字符串);qsort(s,100,sizeof(s0),cmp七、计算几何中凸包的cmpIntcmp (const void * a,const void * b)/键cmp函数,该函数对除一个点和旋转角度之外的所有点进行排序结构点*c=(点*)a;结构点*d=(点*)b;如果(calc(*c,*d,p1) 0)返回1;否则如果(!计算(* c,* d,p 1) dis (c-x,c-y,p 1)。x,p 1。y) dis (d-x,d-y,p 1。x,p 1。y)/。返回1;否则返回-1;3 .排序和排序之间的比较:1.qsort中cmp函数与CMP函数的区别int cmp(const int a,const int b)返回ab排序中的Cmp函数参数可以直接引用参与比较的类型。2.比较2.cmp函数时,qsort使用“-”,而sort使用“”。这也是一个重要的区别。3.排序函数是C语言中标准模板库的一个函数,已经在qsort()上进行了优化,可以根据不同的情况采用不同的算法,因此速度更快。在相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论