我已经为两个算法提供了解决相同问题的运行时函数.让我们说 -
对于第一算法:( T(n) = an + b在n中线性)
对于第二算法:( T(n) = xn^2 + yn + z在n中的二次)
每本书都说线性时间比二次更好,当然它更大n(多大?).我觉得基于常量a,b和x,y和大变化的定义z.
你能不能让我知道如何找到n我们应该从algo2切换到algo1的门槛,反之亦然(是否只能通过实验找到?).如果有人能解释如何在专业软件开发组织中完成,我将不胜感激.
我希望我能解释一下我的问题,如果没有,请告诉我.
在此先感谢您的帮助.
PS - 实现将使用Java,并且预计将在各种平台上运行.我觉得非常难估计常数a,b,x,y和z数学.我们如何解决专业软件开发中的这种困境?
我会一直使用O(n),对于较小的n,它可能会较慢,但无论如何n都很小.如果代码尝试为每个数据集选择最佳算法,则代码中增加的复杂性将使调试和维护变得更加困难.