C语言qsort函数
qsort 是 C 标准库stdlib.h中的一个函数,用于对数组进行快速排序。
语法格式:
void qsort(void *base, size_t num, size_t size,int (*compar)(const void *, const void *));
base:指向要排序的数组的起始地址。
num:数组中元素的个数。
size:每个元素的大小(以字节为单位)。
compar:比较两个元素的函数。
比较函数:
定义:int compar(const void *a, const void *b);
如果 a 小于 b,则返回负值。
如果 a 等于 b,则返回 0。
如果 a 大于 b,则返回正值。
示例:
`#include <stdio.h>
include <stdlib.h>
// 定义比较函数
int compare(const void *a, const void *b) {//*const void :这是一个指向常量数据的通用指针(void pointer)。void *表示可以指向任何类型的数据,而const void 则进一步表明通过这个指针不能修改所指向的数据。
在函数参数中使用const void 通常用于传递任意类型的数据,同时保证这些数据不会被函数内部修改。
return ((int)a - (int)b);//(int *):这是一个类型转换操作,将一个指针转换为指向整数(int)类型的指针。
}
int main() {
int arr[] = {5, 15, 40, 30, 10};
int n = sizeof(arr) / sizeof(arr[0]);
// 使用 qsort 排序
qsort(arr, n, sizeof(int), compare);
// 输出排序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
`
注意:qsort 函数在内部使用了一种快速排序(Quicksort)算法。不稳定。