我试图找到每一行的运行时间,最好的情况和最坏的情况会发生,以及 Big-O 在最坏和最好的情况下。
我粘贴的代码所做的是找到数组中升序数字序列的最长长度。
例如,如果我们有 [4,5,6,9,1,2,3,4,5,6] ,最长的序列将是 6。
第一个 for 循环会被执行 n 次吗?
第二个for循环会执行n次吗?
if语句会被执行n次吗?
if中的语句会被执行n次吗?
当数组按升序排列时会出现最好的情况,而当数组按降序排列时会出现最坏的情况吗?
我不相信这是真的的原因是,当它按升序排序时,第二个循环将一直运行。当它按降序排序时,第二个循环总是会中断,因为 and 语句不成立。
for (i = 0, length = 1; i < n-1; i++) {
for (i1 = i2 = k = i; k < n-1 && a[k] < a[k+1]; k++, i2++);
if (length < i2 - i1 + 1)
length = i2 - i1 + 1;
}
return length;