如何计算Java程序的时间复杂度



如何计算此程序的时间复杂性?有没有更有效的解决方案?

public class MinJumpstoEnd {
public static void main(String[] args) {

int[] a = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9};
//i is used for array elements & c to count jumps
int i =0,c =0;
int j = a[0];

while(a.length-i > j) {
if(a[i]==0) {
System.out.println("Cant Reach");
}
i += j;
c+=1;
j = a[i]-1;
System.out.println("j:"+j);
}
System.out.println("Jumps : "+c);
}
}

在最坏的情况下,i必须遍历整个数组,因此它将是O(n(。它可能会在遍历时跳过其间的几个元素,但它仍然是一个线性函数。

最新更新