【发布时间】:2014-09-01 11:51:01
【问题描述】:
将最可能的条件放在 if、else-if 或 else 条件中是否有任何区别
例如:
int[] a = {2,4,6,9,10,0,30,0,31,66}
int firstCase = 0, secondCase = 0, thirdCase = 0;
for( int i=0;i<10;i++ ){
int m = a[i] % 5;
if(m < 3) {
firstCase++;
} else if(m == 3) {
secondCase++;
} else {
thirdCase++;
}
}
执行时间和输入有什么区别
int[] a = {3,6,8,7,0,0,0,0,0,0}
【问题讨论】:
-
对于时间复杂度,您通常计算最坏情况的时间和介质。在最坏的情况下,您显然每次都会假设最复杂的路径将遵循。所以,回答你的问题,应该没什么区别。
-
这是一个不好的例子,因为如果 n 为正数(包括 0),n % 2 将始终为 0 或 1。
-
感谢@Dici,现在我更正了代码,我现在正确了
-
0 是偶数 (0 % 2 == 0) !一个数字只能是奇数或偶数,% 2 没有第三种情况。更好的例子是 % 3。但是,它仍然是一个糟糕的例子,因为所有三种情况都有相同的概率。我将建议您进行修改。
-
@Dici - 我建议您阅读 JLS 第 15.17.3 节。还有第三种情况。
标签: java time-complexity execution