【发布时间】:2013-08-28 09:38:09
【问题描述】:
stdlib.h 中的函数qsort() 是否顾名思义实际上使用了快速排序算法?
【问题讨论】:
-
不一定。它是由实现定义的。
标签: c sorting optimization qsort
stdlib.h 中的函数qsort() 是否顾名思义实际上使用了快速排序算法?
【问题讨论】:
标签: c sorting optimization qsort
qsort() 函数可以使用库实现者选择的任何排序算法来实现,但顾名思义,该算法应该接近最优。使用 O(N2) 算法是允许的,但这是一个主要的 QoI(实施质量)问题。
值得注意的是,与qsort()接口比较起来相当昂贵;任何增加比较次数以减少移动次数的排序算法(如果您不洗牌指针也可能很昂贵)可能会导致性能下降。但是,这是库实现者需要关注的问题。除非你发现这个库的实现很糟糕(现在这不太可能),否则不要担心。
C++ sort 算法可以围绕 C 的 qsort 运行环。
【讨论】:
C11 标准没有规定。所以任何合理的 O(n log n) 都是可以接受的。
【讨论】: