【发布时间】:2013-04-18 02:12:51
【问题描述】:
也许是个愚蠢的问题,但能否保证 C 标准库中的 qsort() 例程确实实现了快速排序算法?
【问题讨论】:
-
不,事实上只有非常糟糕的实现才会将其实现为快速排序。天真的快速排序有堆栈溢出问题,很容易解决,但即使这样它也有 O(n²) 的运行时间。最先进的实现称为“introsort”,从适当的(非天真的)快速排序开始,但在这种情况下检测最坏情况运行时并切换到堆排序(或任何其他 O(n log n) 排序都可以)。