我试图找出二次选择算法何时比线性选择算法更快。运行一些实验,我生成了两个 3D 图,显示了算法运行时间作为输入数组大小和所需顺序统计量的函数。使用 gnuplot 绘制绘图我确认存在二次算法更快的情况。然后,我使用 gnuplot 的拟合算法找到了两个模拟我观察到的运行时的函数(a、b、c、d、e、f 是我已经找到但省略的常量):
lin_alg_runtime(x,y) = a x + b y +c
quad_alg_runtime(x,y) = (d*x * e*y) + f
其中 x 是输入数组的大小,y 是顺序统计量。
现在我有点迷失如何使用这些模型来计算何时在二次实现和线性实现之间切换。我怀疑我必须找到这两个函数相交的位置,但我不太确定该怎么做。如何找到这两个功能相交的地方?