qsort()使用哪种排序算法?

时间:2013-08-26 00:09:23

标签: c sorting optimization qsort

qsort()中的stdlib.h函数是否实际上使用了快速排序算法,顾名思义?

2 个答案:

答案 0 :(得分:6)

qsort()函数可以使用库实现者选择的任何排序算法来实现,但是名称表明算法应该接近最优。使用O(N 2 )算法是允许的,但是主要的QoI(实施质量)问题。

值得注意的是,qsort()接口的比较非常昂贵;任何增加比较次数以减少移动次数的排序算法(如果你不改组指针也会很昂贵)可能会导致性能下降。但是,这是图书馆实施者需要关注的问题。除非你发现库的实现很可怕(这些日子不太可能),所以使用它并不用担心。

C ++ sort算法可以在C qsort附近运行。

答案 1 :(得分:1)

C11标准未指定。所以任何合理的O(n log n)都是可以接受的。