排序也是程序日常需要做的工作之一,排序的算法有很多,比如冒泡、选择、快速、堆等算法,针对不同情况可以选择不同的算法,但为了提升编码效率,库函数提供一种通用高效排序方法,我们只需提供比较条件就可以直接调用,这样就大大降低了排序的难度。
C语言提供了qsort(),从名称上可以看出它是快速排序法,对较大型的数组而言,快速排序是最有效的排序算法之,该算法由C.A.R.Hoare于1962年开发,它把数组不断分成更小的数组,直到变成单元素数组。
首先,把数组分成两部分,一部分的值都小于另一部分的值,这个过程一直持续到数组完全排序好为止。
qsort()包含在stdlib.h中,格式如下: 由于qsort是通用函数,因此它通过void
void qsort (void *base, size_ t nmemb, size_ t size, int (*compar) (const void *,const void *)) ;
base是数组名或指针,nmemb是数组长度,size是元素大小,int (*compar) (const void *,const void )是比较函数。
下面给出一个随机数数组,然后调用qsort()排序,最后输出该数组。
#include
#include
int comFun(const void* a, const void* b)
{
int* pa = a;
int* pb = b;
return *pa - *pb;
}
int main()
{
//用随机数生成拥有10个元素的数组
int arr[10] = {0};
srand((unsigned)time(NULL));
int i = 0;
for (i = 0; i < 10; i++) arr[i] = rand();
qsort(arr,10,sizeof(int),comFun);
for (i = 0; i < 10; i++) printf("%d ",arr[i]);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)