qsort()
是 C 语言标准库中的一个函数,用于进行数组的排序。其名字“qsort”代表“快速排序”(Quick Sort),这是因为它通常使用快速排序算法进行排序,但具体实现可能因库而异。
以下是 qsort()
的详细介绍:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));
void *base
: 这是指向要排序的数组的首元素的指针。size_t nitems
: 这是数组中的元素数量。size_t size
: 这是数组中每个元素的大小(以字节为单位)。int (*compar)(const void *, const void*)
: 这是一个函数指针,指向比较两个元素大小的函数。比较函数必须返回一个整数,其意义如下:
qsort()
会根据提供的比较函数将数组中的元素排序。它不知道数组中元素的具体类型,因此需要使用 void*
指针。由于它只知道每个元素的大小,所以必须为它提供一个比较函数来确定元素的排序顺序。
#include
#include
int compare(const void *a, const void *b) {
int int_a = *((int *)a);
int int_b = *((int *)b);
if (int_a == int_b)
return 0;
else if (int_a < int_b)
return -1;
else
return 1;
}
int main() {
int values[] = {40, 10, 100, 90, 20, 25};
qsort(values, 6, sizeof(int), compare);
for (int i = 0; i < 6; i ++) {
printf("%d ", values[i]);
}
printf("\n");
return 0;
}
程序运行结果如下:
10 20 25 40 90 100
上面的示例中定义了一个整数数组并使用 qsort()
进行排序。其中,比较函数 compare
是为整数数组设计的。