类p有a,b,c三个变量
这一段:
if p1.a>p2.a:
do
elif p1.a==p2.a:
do
是进行了一次比较还是两次比较?
这样呢?
if p1.a>p2.a:
do
elif (p1.a==p2.a and p1.b>p2.b):
do
是几次比较?
两段比较程序
第一段
if p1.a>p2.a:
do
elif (p1.a==p2.a and p1.b>p2.b):
do
elif (p1.a==p2.a and p1.b==p2.b and p1.c>p2.c):
do
第二段
if p1.a<p2.a:
pass
elif p1.a>p2.a:
do
else:
if p1.b<p2.b:
pass
elif p1.b>p2.b:
do
else:
if p1.c>p2.c:
do
第二段的运行效率会高一些吗?
求更好的解决方法。
第一段的比较次数更少吧。分支判断比第二段少
a b 次数 p1?p2 p1?p2 一 二 < < 3 1 < = 3 1 < > 3 1 = < 5 3 = = 6 5 = > 3 4 > < 1 2 > = 1 2 > > 1 2 合计 26 21
又:比较大小还是很简单的,不必纠结。影响效率的是 do 的复杂度啊。个人觉得还是第二种高,可以预先比较好,然后直接if比较结果就行。这样不用每次再进行一次比较运算。但是具体到第一种,还是要进行AND运算,而第二种则不必。