快速排序(quick sort)是最有效的排序算法之一。
C实现的快速排序算法的函数名为qsort(), qsort()函数对数据对象数据进行排序。其函数原型在头文件stdlib.h中
其原型为:
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *,const void *));
第一个参数为指向要排序的数组头部指针,因为任何数据类型的指针可以转化成void类型指针,故qsort()的第一个参数可以指向任何类型的数组;
第二个参数为要排序的元素数量;
第三个参数为数组中数据对象的大小。因为qsort()将第一个参数转换为void指针,所以会失去每个数组元素的大小信息,为了补充该信息必须把数据对象的大小明确告诉qsort();
第四个参数为指向函数的指针,被指向的函数用于确定排序的规则。该函数接受两个参数,分别为指向进行比较的两个元素,
如果第一个元素大于第二个元素返回正数,小于返回负数,等于返回0;
下面的示例程序创建了一个由随机浮点数组成的数组,并对该数组排序。
/*
* qsort函数的使用
* 函数原型 void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *,const void *));
*/
#include <stdio.h>
#include <stdlib.h>
#define NUM 40
void fillarray(double ar[], int n);
void showarray(const double ar[], int n);
int mycomp(const void *p1, const void *p2);
int main(void)
{
double ar[NUM];
fillarray(ar, NUM);
printf("Random List:\n");
showarray(ar, NUM);
qsort(ar, NUM, sizeof(double), mycomp);//函数调用
printf("\nSorted List:\n");
showarray(ar, NUM);
return 0;
}
//产生随机数数组
void fillarray(double ar[], int n)
{
int index;
for (index = 0; index < n; index++)
{
ar[index] = (double)rand() / ((double)rand() + 0.1);
}
}
//打印数组
void showarray(const double ar[], int n)
{
int index;
for (index = 0; index < n; index++)
{
printf("%9.4f ", ar[index]);
if (index % 6 == 5)
{
putchar('\n');
}
}
}
//排序规则
int mycomp(const void *p1, const void *p2)
{
const double *a1 = (const double *)p1;
const double *a2 = (const double *)p2;
if (*a1 < *a2)
{
return -1;
}
else if (*a1 == *a2)
{
return 0;
}
else
{
return 1;
}
}
输出结果:
Random List:
0.0022 0.2390 1.2191 0.3910 1.1021 0.2027
1.3835 20.2830 0.2508 0.8880 2.2179 25.4866
0.0236 0.9308 0.9911 0.2507 1.2802 0.0939
0.9760 1.7217 1.2054 1.0326 3.7892 1.9635
4.1137 0.9241 0.9971 1.5582 0.8955 35.3798
4.0579 12.0460 0.0096 1.0109 0.8506 1.1529
2.3614 1.5876 0.4825 6.8749
Sorted List:
0.0022 0.0096 0.0236 0.0939 0.2027 0.2390
0.2507 0.2508 0.3910 0.4825 0.8506 0.8880
0.8955 0.9241 0.9308 0.9760 0.9911 0.9971
1.0109 1.0326 1.1021 1.1529 1.2054 1.2191
1.2802 1.3835 1.5582 1.5876 1.7217 1.9635
2.2179 2.3614 3.7892 4.0579 4.1137 6.8749
12.0460 20.2830 25.4866 35.3798
分享到:
相关推荐
qsort 函数是 C 语言标准库中的一种排序算法,用于对数组进行排序。它是快速排序(Quicksort)算法的一种实现,能够高效地对数组进行排序。下面是 qsort 函数的详细介绍。 一、qsort 函数的基本用法 qsort 函数的...
qsort 函数是 C 语言标准库中的一种排序算法,用于对数组进行排序。它的原型如下: `void qsort(void *base, size_t num, size_t width, int (*cmp)(const void *, const void *))` 其中,`base` 是要排序的数组的...
qsort函数是C标准库中的一个非常重要的排序函数,它使用快速排序算法对数据进行排序,是程序员在编写程序过程中进行数据排序的有力工具。qsort函数能够对各种类型的数据进行排序,因为它并不关心数据的类型,而是...
`qsort`函数是C语言标准库中用于通用数组排序的一个强大工具,它使用快速排序算法,提供了高度灵活的排序机制。`qsort`的原型在`<stdlib.h>`头文件中定义,其通用性使得它可以处理任何类型的数据,只要用户能够提供...
qsort 函数是 C 语言标准库中的一个函数,用于对数组进行排序。它是根据元素的值或结构体成员的值进行排序的。本文将对 qsort 函数的七种应用进行详细讲解。 一、对 int 类型数组排序 qsort 函数可以对 int 类型...
qsort函数是C标准库中的一个通用排序函数,它可以对任何类型的数据进行排序,只要提供适当的比较函数和数据类型。为了使用冒泡排序实现qsort函数,我们需要定义一个符合qsort要求的比较函数,然后通过qsort函数调用...
以上只是C语言标准库的一部分,每个函数都有其特定的用途和用法,掌握这些函数能极大地提升编程效率。通过深入学习和实践,开发者可以更加熟练地运用C语言解决各种问题。这个压缩包提供的C语言函数大全,正是一个很...
C语言中的qsort函数是标准库中提供的一种排序算法,主要用于对数组进行排序。qsort函数的声明在stdlib.h头文件中,函数原型为: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, ...
`qsort` 是一个在 C 语言标准库 `<stdlib.h>` 中定义的函数,用于对数组进行快速排序。它是一个非常强大的工具,可以用来对多种数据类型进行排序,包括基本数据类型如 `int`, `char`, `double` 以及复杂数据类型如...
C标准库,全称为C Standard Library,是C编程语言的核心组成部分,它提供了一系列预先定义好的函数和类型,供程序员在编写程序时使用。这个压缩包包含的“C标准库源代码”是C语言爱好者和开发者宝贵的参考资料,可以...
标准C语言函数库,通常被称为C标准库,是C语言编程的核心组成部分,为程序员提供了大量的预定义函数,使得开发过程更加便捷。本文将深入探讨标准C语言函数库的各个方面,包括它的起源、组成、主要功能以及如何在实际...
C标准库使用排序 C语言标准库函数qsort排序的介绍与使用 qsort函数声明如下: void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));
本文件“c语言函数库.rar”很可能包含了一份关于C语言标准库的详细资料。 C语言的标准库,也被称为ISO C库,被定义在C语言的ISO/IEC 9899标准中。这个库分为多个部分,包括: 1. 输入/输出(I/O):`stdio.h`...
`qsort`是C语言标准库中的一个强大而灵活的排序函数,用于对数组进行排序。它使用了快速排序算法作为其内部实现,因此被称为“快速排序”或简称“快排”。本文将详细介绍`qsort`函数的工作原理及其在C语言中的实现...
通过阅读和分析这些源代码,你可以了解C语言标准库的实现细节,学习如何编写高效、安全的C代码。此外,还能理解库函数的错误处理策略,以及它们是如何与操作系统进行交互的。这对于提升编程技巧,尤其是进行系统级...
C语言函数库是C标准库的重要组成部分,它是为C语言程序员提供的各种标准函数的集合,这些函数可以用来执行各种常见的任务,如输入/输出、内存操作、数学计算、系统调用等。下面将详细介绍各函数库的内容及其用途。 ...
这个文本文件可以帮助你理解C标准库如何与POSIX兼容,以及如何在不同操作系统上使用这些函数。 总的来说,这个压缩包是一个全面的C语言学习资源,无论是初学者还是经验丰富的开发者,都能从中受益。通过阅读手册,...
- `qsort`是C语言标准库中的一个函数,用于对任意类型的数组进行排序。 - 函数原型为:`void qsort(void *base, size_t num, size_t size, int (*compar)(const void *, const void *));` - `base`:指向待排序...
三、C语言函数使用方法 在使用C语言函数时,需要首先通过#include指令引入相应的头文件,然后根据函数原型正确调用函数。例如,要使用printf()函数输出字符串,需在程序开头写入`#include <stdio.h>`,接着在主函数...