当我们应该使用quicksort时,我尝试理解一个公式。例如,我们有一个 N = 1_000_000个 元素的数组。如果 仅 搜索 一次 ,则应使用简单的 线性搜索 ,但是如果要 搜索 10次,则应使用排序数组 O(n log n) 。如何以及何时应使用排序的输入数组大小以及之后使用二进制搜索的阈值检测方法?
您想解决不平等的问题,这种不平等可能被描述为
t * n > C * n * log(n) + t * log(n)
这里t是检查的次数,并且C对于排序实现是一个常数(应通过实验确定)。当评估此常数时,您可以用数值方法解决不等式(当然有不确定性)
t
C