qsort()
中的stdlib.h
函数是否实际上使用了快速排序算法,顾名思义?
答案 0 :(得分:6)
qsort()
函数可以使用库实现者选择的任何排序算法来实现,但是名称表明算法应该接近最优。使用O(N 2 )算法是允许的,但是主要的QoI(实施质量)问题。
值得注意的是,qsort()
接口的比较非常昂贵;任何增加比较次数以减少移动次数的排序算法(如果你不改组指针也会很昂贵)可能会导致性能下降。但是,这是图书馆实施者需要关注的问题。除非你发现库的实现很可怕(这些日子不太可能),所以使用它并不用担心。
C ++ sort
算法可以在C qsort
附近运行。
答案 1 :(得分:1)
C11标准未指定。所以任何合理的O(n log n)都是可以接受的。