我有以下方法:
如何计算Big-O?
O(2 n )或O(n n )??
感谢。
public static void combination(String str, int r)
{
int len = str.length();
if (len == r) myList.add(str);
if (len == 1) return;
String newStr = null;
for (int i = 0; i < len; i++) {
newStr = str.substring(0, i) + str.substring(i + 1);
combination(newStr, r);
}
}
答案 0 :(得分:1)
(因为这是家庭作业,只是提示!)
你有没有弄清楚代码的用途?给定输入产生多少输出?
这必须是算法运行时间的下限,因为你无法比你必须生成的输出数更快地运行。也许最简单的方法是查看各种输入的列表大小,并以此为基础。
答案 1 :(得分:1)
这是我的提示。
int n = str.length();
答案 2 :(得分:1)
尝试将算法转换为等式,如X(n + 1)=函数(X(n))并解析等式。
如果你不能,试试初始情况X(1)=函数(X(0)),然后X(2)=函数(X(1))等...你会注意到一个模式(可能答案与O(2 ^ n)或O(n ^ n)不同。
提示!!!
答案 3 :(得分:0)
对于不那么复杂的情况,我使用counter。
textarea
解决方案确实是O(2 ^ n)