我有很多if
语句,我想为它们找到最优化的顺序。
每种情况的时间复杂度都不同,并且触发时间也不同。例如,case1
可能是Θ(n^2)
的{{1}}与case3
的比较,但是第二个会更早地停止该功能,因此最好将其放在第一位。
我将如何寻找最有效的方式来对if语句进行排序?
Θ(log(n))
答案 0 :(得分:1)
要做出明智的设计决策,您需要定义目标:
但是要做出最佳决定,您需要考虑很多因素:
如果您需要更多帮助,则应该为您的问题提供更具体的信息。
答案 1 :(得分:1)
您的目标是什么?是减少平均时间,最坏情况的时间还是其他措施?
最短平均时间: 如果您具有有关每种情况所需时间,其相对概率和不满足条件的时间的统计信息,则可以计算每个条件子句的期望值,并选择最佳条件。
(如果适用的话,避免像奥斯汀和沙达布·艾哈迈德(Shadab Ahmed)所提出的那样,避免出现if子句的顺序是一个好主意。)
答案 2 :(得分:0)
如果您想要开关之类的东西,请尝试下面的代码
def f(x):
return {
'a': 1,
'b': 2,
}[x]
如果要在所有条件下运行,则可以尝试并行运行这些功能,而最差的时间复杂度将是所有功能的最大值。并行运行Python: How can I run python functions in parallel?
的示例