资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C函数qsort的简介和用法BY:SMJUNC函数qsort实现快速排序排序方法有很多种:选择排序,冒泡排序 ,归并排序,快速排序等。 看名字都知道快速排序 是目前公认的一种 比较好的排序算法,比选择排序,冒泡排 序都要快。因为它的速度很快,所以系统 也在库里实现这个算法,便于我们的使用 。 这就是qsort。qsort简介 qsort函数是ANSI C标准中提供的,其声明在 stdlib.h文件中,是根据二分发写的,其时间复杂 度为n*log(n),其结构为: void qsort(void *base,size_t nelem,size_t width, cmp); *base 为要排序的数组 nelem 为要排序的数组的长度 width 为数组元素的大小(一字节为单位) 简单示例:对int num100排序,qsort中各参数 怎么写? qsort(num,100,sizeof(num0),cmp);自定义比较函数 比较函数的名字是自定义的(这里我们用CMP命名); Cmp:qsort 要求提供的这个函数是一个需要自己定义的比较函 数,比较函数使得qsort通用性更好。有了比较函数qsort可以实 现对数组,字符串,结构体等结构进行升序或降序排序。 Int Cmp(const void *a , const void *b )中有两个元素作为参数, 返回一个int值, 如果比较函数返回大于0,qsort就认为 ab , 如果比较函数返回等于0 qsort就认为a 和b 这两个元素相等,返 回小于零 qsort就认为 ab),你比较函数却返回 一个 -1 (小于零的)那么qsort认为a #include int cmp_1 ( int *a , int *b ) return *a - *b; int cmp_2 ( int *a , int *b ) return *b - *a; void main() int num10=1,3,5,7,9,2,4,6,8,0; int i; qsort(num,10,sizeof(num0),cmp_1);/从小到大 for(i=0;i #include int cmp_1 ( char *a , char *b ) return *a - *b; int cmp_2 ( char *a , char *b ) return *b - *a; void main() char ch10=“bcadfegihj“; int i; qsort(ch,10,sizeof(ch0),cmp_1);/从小到大 for(i=0;i #include struct coord int x; int y; data100;int cmp(struct coord *a ,struct coord *b) /根据y的大小排序 return a-y - b-y ; void main() int sum=0,n; int i,j; /freopen(“in.txt“,“r“,stdin); while(scanf(“%d“,i #include struct coord int x; int y; data100; int cmp(struct coord *a ,struct coord *b) if(a-x != b-x) return a-x - b-x; /按照x从小到大排序,当x相等时按照y从大到小排序 else return a-y - b-y ; void main() int sum=0,n; int i,j; freopen(“in.txt“,“r“,stdin); while(scanf(“%d“,istr , (*(In *)b)-str ); qsort(s,100,sizeof(s0),cmp); strcmp包含在的头文件里 END
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号