C语言标准库函数qsort(快速排序函数)

avatar
作者
猴君
阅读量:0

qsort函数是C语言标准库中提供的一个快速排序函数。它的函数原型如下:

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 

参数说明:

  • base:指向要排序的数组的首元素的指针。

  • nmemb:数组中元素的个数。

  • size:每个元素的大小(以字节为单位)。

  • compar:比较两个元素的函数指针。

使用qsort函数可以对任意类型的数组进行排序,只需要提供一个用于比较元素大小的函数即可。这个比较函数需要返回一个整数值,表示两个元素的大小关系。如果返回值小于0,则第一个元素小于第二个元素;如果返回值等于0,则两个元素相等;如果返回值大于0,则第一个元素大于第二个元素。

以下是一个使用qsort函数排序整数数组的示例代码:

#include <stdio.h> #include <stdlib.h> int compare(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int arr[] = {4, 2, 8, 5, 1}; int n = sizeof(arr) / sizeof(arr[0]); qsort(arr, n, sizeof(int), compare); printf("Sorted array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } 

输出结果为:1 2 4 5 8,表示数组已经按升序排序。

需要注意的是,qsort函数使用的是快速排序算法,它具有较好的平均时间复杂度(O(nlogn)),但在最坏情况下的时间复杂度可能达到O(n^2)。如果对性能要求较高,可以考虑使用其他排序算法。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!