java - 作为运行时间 N 的函数的增长顺序
问题描述
我正在尝试练习算法的复杂性,我该怎么做?!我不明白这个问题或我必须做些什么计算才能得到它......任何帮助都会很棒!
int N = 50 ;
int sum = 0 ;
for (int n = N ; n > 0 ; n/=2 ) {
for (int i = 0 ; i < n ; i++) {
sum++ ;
}
}
解决方案
您可以在外部循环的每次迭代中根据内部循环编写迭代N
次数,例如:
T(N) = N + N/2 + N/4 + ... + 1 = N (1 + 1/2 + 1/4 + ...+ 1/(2^log(N)) = Theta(N)
因此,时间复杂度O(N)
也在其中。
推荐阅读
- javascript - Facebook Firebase Auth 和 Facebook Graph API 与 React
- javascript - ajax 调用仅在第一次调用期间返回“未定义”
- python - 是否有任何选项可以按 django python 中的模型文件过滤数据?
- python - 多个变量的理解列表,以便将结果连接成字符串列表
- php - 如何在控制器中使用构造函数为所有函数传递 $variables (Laravel)
- php - PHP在文本框中查找字符串
- python - 为什么我的数据集的一部分被 spyder 着色,而部分不是?
- python - 如何等待元素被文本填充
- django - Django stripe.error:无效的卡片对象:必须是字典或非空字符串
- php - 如何在变量存储的数据中嵌入包含文件?