内置函数,用于在C中对数组进行排序

Clu*_*oob 5 c arrays sorting function built-in

C编程语言中是否有用于排序数组的内置函数?或者我必须编写自己的函数?

Dan*_*ski 9

看看qsort

句法:

#include <stdlib.h>
void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );

描述:

qsort()函数使用Quicksort对buf(包含每个大小的num项)进行排序.比较函数用于比较buf中的项目.如果第一个参数小于第二个参数,则compare应返回负数,如果它们相等则返回零,如果第一个参数大于第二个参数,则返回正数.qsort()按升序对buf进行排序.

  • 注意:qsort()不一定是快速排序.(虽然经常是这样) (2认同)

nha*_*tdh 7

您可以使用qsortstdlib.h.它是快速排序算法,其平均时间复杂度为O(nlogn),最差情况复杂度为O(n 2).C99标准,甚至较新的C11标准没有强制要求功能的实现和时间复杂度.但是,通常的实现很可能会使用能够产生平均情况O(nlogn)时间复杂度的算法(通过比较对于排序是最佳的).

您可以使用它来排序任何类型的数组(偶数struct) - 但您必须提供比较函数来比较数组的2个元素.

  • 注意:qsort()不一定是快速排序.(虽然经常是这样) (2认同)

Jay*_*Jay 6

qsort是众所周知的.还有其他人也喜欢heapsort,mergesort等.请查看链接了解更多详情.

请注意,它们都将比较函数作为输入,使它们可以轻松地用于本机和用户创建的数据类型.