排序方法之标准库中的快排 qsort ()函数

2023-02-13,,,,

C标准库qsort()函数的用法(快排)

使用快速排序例程进行排序

头文件:stdlib.h

用 法: void qsort(void *base, int  nelem, int  width, int (*fcmp)(const void*,const void *));

参数: 1 待排序数组首地址

2 数组中待排序元素数量

3 各元素的占用空间大小

4 指向函数的指针,用于确定排序的顺序

其中comp函数应写为:

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

{

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

}

上面是由小到大排序,return*(int *)b-*(int *)a; 为由大到小排序。

对一个二维数组进行排序:

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];

}

qsort函数代码示例

#include<stdio.h>

#include<stdlib.h>

#define nmemb 7

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

{

//返回负数表示从达到小排列

//返回正数表示从达到小排列

int *aa =(int *)a,*bb=(int *)b;

printf("%d\n%d",*aa,*bb);

if(*aa > *bb) return 1;

if(*aa == *bb) return 0;

if(*aa < *bb) return -1;

return 1;

}

int main()

{

int a[10]={10,9,6,3,8};

int i=0;

qsort(a,10,sizeof(int ),compar);

for( i=0;i<10;i++)

printf("%d\t",a[i]);

return 0;

}

运用此函数还可以实现结构体和字符串的排序,在这里就不写了,百度上可以找到很多这样的例子啊!

排序方法之标准库中的快排 qsort ()函数的相关教程结束。

《排序方法之标准库中的快排 qsort ()函数.doc》

下载本文的Word格式文档,以方便收藏与打印。