qsort简单解析

来源:互联网 发布:淘宝企业店铺怎么发货 编辑:程序博客网 时间:2024/06/07 08:41
编译器函数库自带的快速排序函数。
使用qsort()排序并用 bsearch()搜索是一个比较常用的组合,使用方便快捷。
qsort 的函数原型是
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针
其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。(不同类型的参数要用不同的函数进行比较)
根据返回值的不同,可以改变qsort是从小到大排列还是从大到小排列。返回值小于零从小到大排列,返回值大于零从大到小排列。
一  整形比较
int comp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
     二 字符串比较
int Comp(const void*p1,const void*p2)
{
return strcmp((char*)p2,(char*)p1);
}
   三 结构体关键字比较
structNode
{
double data;
int other;
}s[100];
int Comp(constvoid*p1,constvoid*p2)
{
return(*(Node*)p2).data>(*(Node*)p1).data?1:-1;
}
写一个完整的简单整形排序:
#define _CRT_SECURE_NO_DEPRECATE 1#include <stdio.h>    #include <stdlib.h>   #include <string.h>#include <stdarg.h>int Comp(const void*p1,const void*p2){   return *(int*)p1-*(int*)p2;}int  main(){int arr[]={1,5,2,3,4,6,8,7,9};int sz =sizeof(arr)/sizeof(arr[0]);int i = 0;qsort(arr,sz,sizeof(arr[0]),Comp); for(i=0; i<sz; i++){printf("%d",arr[i]);}system("pause");    return 0;}

0 0
原创粉丝点击