[英]Time Complexity of an algorithm : How to decide which algorithm after calculated the time
[英]How to justify the time complexity of an algorithm?
我对数据结构比较陌生,并且可以在您如何证明算法的合理性方面使用一些帮助。 我相信下面的算法是O(n + m)的时间复杂度,因为您独立地遍历两个不同的 arrays。 你也可以假设 arrays 总是排序的。
public static void intersectionTwoArrays(int[] a, int[] b){
int i = 0;// Index for array a
int j = 0;// Index for array b
//
while(i < a.length && j < b.length){
if(a[i] == b[j]){
System.out.println(a[i]);
i++;
j++;
}
else if(a[i] < b[j]){
i++;
}
else if(a[i] > b[j]){
j++;
}
}// end while
}// end Method
public static void main(String[] args){
int[] list1 = {0,1,3,5,6,8,10,11};
int[] list2 = {0,2,3,4,7,8,11};
intersectionTwoArrays(list1, list2);
}// end main
是的,时间复杂度是 O(n + m)。
最坏的情况可能是a
由连续的奇数组成, b
- 由连续的偶数(正)组成,如下所示:
a = 1 3 5 ... 2k+1
b = 2 4 6 ... 2k+2
在这种情况下, i
和j
都将增加到a.length
和b.length
。 这正是a.length + b.length
步或 O(n + m),其中n = a.length
和m = b.length
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.