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*,然后解引用以获取整数值。
ICP备案:
公安联网备案: