C 语言 qsort()17 Mar 2025 | 5 分钟阅读 qsort() 是 C 库中的一个预定义标准函数。我们可以使用此函数对数组进行升序或降序排序。它内部使用快速排序算法,因此得名 qsort。它可以对包括字符串和结构在内的任何数据类型的数组进行排序。它运行良好且易于实现。C++ 中有一个类似于 C 语言 qsort() 的 sort() 函数。在运行时间、安全性和灵活性等方面,sort() 都优于 qsort()。 本教程通过示例解释了 qsort() 函数。C 标准并未指定该函数的复杂度,但由于它内部遵循快速排序算法,因此其平均时间复杂度暂定为 O(n*logn)。该函数定义在 stdlib 头文件中,因此在使用前需要包含它。 函数语法array:要排序的数组。 number:我们要排序的数组中的元素数量 size:数组中单个元素的大小 function:我们需要以指定格式编写的自定义比较函数 函数的指定格式
现在,我们将探讨用于对不同数据类型数组进行排序的函数。1. 对整数进行排序输出 Enter the size of the array to be sorted: 5 Enter elements into the array: 98 34 89 0 2 The sorted array: [0, 2, 34, 89, 98] 理解在这两行 int a = *(int*) num1; int b = *(int*) num2; 输入数组的类型为 <int>。因此,在执行任何内存分配操作之前,我们必须将 void 指针转换为整数指针。我们将两个指针指向的值存储在另外两个整数变量 a 和 b 中。然后,我们使用比较运算符比较这两个值。 我们可以使用一行代码代替使用两个额外的临时变量
2. 对字符串进行排序输出 Enter the size of the array to be sorted: 5 Enter elements into the array: hi hello how are you The sorted array: [are, hello, hi, how, you] 理解
3. 对结构体数组进行排序输出 Original array: [[1, 7], [4, 0], [9, 4], [8, 8], [2, 4]] Sorted array: [[1, 7], [2, 4], [4, 0], [8, 8], [9, 4]] 理解我们声明了一个结构体类型的数组,这意味着数组中的每个元素都是结构体元素的数组。在上面的程序中,该结构体有两个整数元素。任务是根据第一个结构体元素对数组进行排序,如果任意两个第一个元素相等,我们则需要根据第二个元素对其进行排序。 示例 [[1, 2], [3, 4], [1, 4]] 排序后的数组:[[1, 2], [1, 4], [3, 4]] 我们使用了 rand() 函数为数组生成随机元素。在 compare() 函数中,我们需要将两个指针类型转换为结构体类型。 ![]() 使用 qsort() 的特殊之处在于我们可以按照自己的意愿设计自定义比较函数。我们还可以对数组中的一部分元素进行排序,而将其余元素保持不变。 下一主题C 语言中的测验游戏 |
我们请求您订阅我们的新闻通讯以获取最新更新。