Algorithm 字符串生成算法的时间复杂度
这本书将此报告为Algorithm 字符串生成算法的时间复杂度,algorithm,Algorithm,这本书将此报告为O(xn^2) 以下是我的工作: 1调用以最初创建字符串句子 有N个调用(由于for循环有N个调用) 然后有N个调用要分配句子=句子+w 最后一次调用send返回语句 总计: 这使得O(N^2+2)=O(N^2) 问题 (1) 我的工作正确吗 (2) 他们从哪里得到O(xn^2)中的x的额外因子 谢谢 总计: 这使得O(N^2+2)=O(N^2) 把你的自行车这样放: String joinWords (String[] words){ String sentence =
O(xn^2)
以下是我的工作:
1调用以最初创建字符串句子
有N个调用(由于for循环有N个调用)
然后有N个调用要分配句子=句子+w
最后一次调用send返回语句代码>
总计:
这使得O(N^2+2)=O(N^2)
问题
(1) 我的工作正确吗
(2) 他们从哪里得到O(xn^2)
中的x
的额外因子
谢谢
总计:
这使得O(N^2+2)=O(N^2)
把你的自行车这样放:
String joinWords (String[] words){
String sentence = "";
for(String w: words){
sentence = sentence + w;
}
return sentence;
}
String连接词(String[]词){
字符串句子=”;
//字数。长度是一个常数,不进行调用
对于(int i=0;i,这是一个写得很差的示例,因为它将重新分配句子N
次,而不是一次导致O(x.N^2)
字符串句子=”;
for(String w:words)//循环N次(如果N是字数)
句子=句子+w;//这会重新分配整个事情
如果句子=句子+w;
将是O(1)
,那么结果将是O(N)
,但情况并非如此,因为:
句子=句子+w;
实际上是这样的:
String joinWords (String[] words){
String sentence = "";
for(String w: words){
sentence = sentence + w;
}
return sentence;
}
String temp=大小为的新字符串(句子大小+w大小);
对于(i=0;iit将仅为O(n)!”则有n个调用指定句子=句子+w“true,但为什么这些n需要与另一个n相乘?什么抽象机器模型/运行时环境/编程语言?是句子=句子+w;
持续努力?x是单词的平均长度,但时间复杂度是O((xn)^2)。可通过StringBuilder将其优化为O(xn):