我在某些情况下产生了严重的疑虑和偏执,想知道使用快速排序算法是否会成为应用程序中的安全风险。
它的基本实现以及改进版本(如3-中值快排)具有行为异常的特点,这意味着它们对于某些输入数据的运行时间可能会极大地增加(具有O(n^2)
的复杂度),更不用说可能出现堆栈溢出的情况。
因此,如果向一个导致该算法表现异常的程序提供预排序的数据,可能会对例如多客户机 Web 应用程序产生无法预测的后果,从而造成潜在的危害。
这个奇怪的情况是否值得考虑安全问题(因此我们需要使用插入-或归并排序)?
编辑:我知道有方法可以防止快速排序的最坏情况,但是什么是语言集成排序(如.NET的3-Median)。它们是否是禁区?