【发布时间】:2019-06-22 22:03:52
【问题描述】:
我创建了一个函数,它循环遍历数组并打印数组的任意两个值,这两个值可以加起来为值 K。外部 for 循环是 O(n),但内部循环对我来说有点混乱,如果运行时间是 O(Log n) 或 O(n)。你能帮忙吗?谢谢!!
int canMakeSum(int *array, int n, int key){
int i, j;
for(i = 0; i < n; i++){
for(j = (i+1); j < n; j++){
if(array[i]+array[j] == key){
printf("%d + %d = %d\n", array[i], array[j], key);
}
}
}
}
【问题讨论】:
-
内循环运行 (n-1) + (n-2) + ... + 1 = n*(n-1)/2 次。加起来总共 O(n^2)
标签: c algorithm search runtime