首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言中的qsort步骤的使用

2013-04-09 
c语言中的qsort方法的使用c语言类库中自带了快速排序算法qsort。用 法: void qsort(void *base,int nelem,i

c语言中的qsort方法的使用

c语言类库中自带了快速排序算法qsort。

用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));参数:base(待排序数组首地址) nelem(数组中待排序元素数量)  width(一个元素的占用空间大小) fcmp(指向函数的指针,用于确定排序的顺序)

举例说明:

1)一维的数组排序-int a[1000]

qsort(a,1000,sizeof(int),comp);

int comp(const void *a,const void *b)

{   return *(int *)a-*(int *)b; }

2)二维的数组排序-int a[1000][2]

注:按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换

qsort(a,1000,sizeof(int)*2,comp); int comp(const void *a,const void *b) {    return ((int *)a)[0]-((int *)b)[0]; }

3)字符数组排序-char a[1000][20];

qsort(a,1000,sizeof(char)*20,comp); int comp(const void *a,const void *b){    return strcmp((char *)a,(char *)b); }  

4)结构体排序

typedef struct str {    char str1[11];    char str2[11]; }str;

str *strs;strs=(str *)malloc(sizeof(str)*10);

int compare(const void *a,const void *b) {   return strcmp(((str*)a)->str2,((str*)b)->str2); } qsort(strs,10,sizeof(str),compare);

5)浮点数排序-double a[1000]

注:两个double数是不可能相等的,只能说fabs(a-b)<1e-20之类的这样来判断

qsort(a,1000,sizeof(double),cmp); int cmp(const void * a,const void * b){  double rs=*(double*)a-*(double*)b;  if(fabs(rs)<1e-20)    return 0;  else    return rs>0?1:-1;}

 

 

热点排行
Bad Request.