Java 这个算法的运行时间是多少
运行时间是多少Java 这个算法的运行时间是多少,java,algorithm,Java,Algorithm,运行时间是多少 String[] stringCombo = new String[5]; for (int i = 0; i < stringCombo.length; i++) { stringCombo[i] = deleteCharAt(s,i); s = original; } 以下是[]的Java源代码。查看子字符串,您会发现子字符串(..)的顺序是O(1)(在Java6之前)。[[对于Java>=7,子字符串实际上涉及复
String[] stringCombo = new String[5];
for (int i = 0; i < stringCombo.length; i++) {
stringCombo[i] = deleteCharAt(s,i);
s = original;
}
以下是[]的Java源代码。查看
子字符串
,您会发现子字符串(..)
的顺序是O(1)(在Java6之前)。[[对于Java>=7,子字符串实际上涉及复制(sub)数组,它是一个O(N)
操作(参见下面的Paul Boddington评论)]]
您这样做了5次,这是固定的。因此,无论N
(?),此代码将运行5次
Q:你认为这取决于N
A:否
顺序是O(1)。它取决于运行时间,因为deleteCharAt()在这些问题中,
N
必须有某种意义。这里是什么?5个字符串中的字符总数?专用静态字符串deleteFirstChar(字符串s){return s.substring(1);}运行时间为20分钟。我只是checked@Doejo我认为您将deleteCharAt()
与deleteFirstChar()
混淆了。您看到的是子字符串的旧版本。它以前是O(1)
,但现在它的字符数是线性的,因为它复制数组。哦,是的!对于Java>=7,复制数组是一个O(N)
操作。我一直犯这个错误!谢谢你,保尔·伯丁顿。我会编辑它。
private static String deleteFirstChar(String s) {
return s.substring(1);
}