C语言qsort():快速排序
qsort() 是 C语言的一个标准库函数,定义在
qsort() 函数用于对数组进行快速排序,它是一个通用的排序函数,支持对不同类型的元素进行排序。
qsort() 函数的原型如下:
【实例】以下是一个使用 qsort() 对整数数组进行排序的 C语言代码示例。
<stdlib.h>
头文件中。qsort() 函数用于对数组进行快速排序,它是一个通用的排序函数,支持对不同类型的元素进行排序。
qsort() 函数的原型如下:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));
参数
- base:指向要排序的数组。
- nitems:指明数组中的元素数量。
- size:每个元素的大小(以字节为单位)。可以使用 sizeof 运算符来确定。
- compar:指向函数的指针,用于自定义排序规则。compar() 函数通过返回值来确定当前比较的两个数据的顺序,如下表所示。
返回值 | 意义 |
---|---|
<0 | p1 所指元素位于 p2 所指元素的前面 |
0 | p1 所指元素和 p2 所指元素相等 |
>0 | p1 所指元素位于 p2 所指元素的后面 |
返回值
无,qsort() 函数没有返回值,函数执行完成后,base 数组中存储的就是有序序列。【实例】以下是一个使用 qsort() 对整数数组进行排序的 C语言代码示例。
#include <stdio.h> #include <stdlib.h> int compare(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int values[] = { 40, 10, 100, 90, 20, 25 }; int n = sizeof(values) / sizeof(values[0]); qsort(values, n, sizeof(int), compare); printf("Sorted array: "); for (int i = 0; i < n; i++) { printf("%d ", values[i]); } return 0; }输出结果为:
Sorted array: 10 20 25 40 90 100
在这个示例中,compare() 函数就是自定义的比较规则,由于 qsort() 使用 void* 指针来处理不同类型的元素,所以compare()函数中需要将指针转换为适当的类型,这个例子中将指针转换为 int*,然后解引用以获取整数值。