Java 如何分析以下代码的时间复杂度?
是Java 如何分析以下代码的时间复杂度?,java,algorithm,time-complexity,Java,Algorithm,Time Complexity,是O(n^6)还是O(n!) 试着这样做: private static int ord = 1; public boolean isScramble(String s1, String s2) { boolean b = isScramble(s1, 0, s1.length(), s2, 0); System.out.println("The order is: " + [insert your classname here].ord); return b; }
O(n^6)
还是O(n!)
试着这样做:
private static int ord = 1;
public boolean isScramble(String s1, String s2) {
boolean b = isScramble(s1, 0, s1.length(), s2, 0);
System.out.println("The order is: " + [insert your classname here].ord);
return b;
}
private static boolean isScramble(String s1, int begin1, int end1, String s2, int begin2) {
ord++;
final int length = end1 - begin1;
然后用增加的字符串大小(n)运行它,并记下ord是如何随着n的增加而增加的。这将为您提供正确的O表示法。基本上,您只需计算递归函数被调用的次数
T(1) = 1
T(n) = (T(1) + T(n-1)) * 2 + (T(2) + T(n-2)) * 2 + ....
=~ T(1) + T(2) + ... + T(n-1)
private static int ord = 1;
public boolean isScramble(String s1, String s2) {
boolean b = isScramble(s1, 0, s1.length(), s2, 0);
System.out.println("The order is: " + [insert your classname here].ord);
return b;
}
private static boolean isScramble(String s1, int begin1, int end1, String s2, int begin2) {
ord++;
final int length = end1 - begin1;