问题
如何找到算法的时间复杂度?
在SO上发布问题之前我做了什么?
但是,我没有能够找到关于如何计算时间复杂度的明确而直接的解释.
我知道什么 ?
假设代码如下所示:
char h = 'y'; // This will be executed 1 time
int abc = 0; // This will be executed 1 time
Run Code Online (Sandbox Code Playgroud)
说一个像下面这样的循环:
for (int i = 0; i < N; i++) {
Console.Write('Hello World !');
}
Run Code Online (Sandbox Code Playgroud)
int i = 0; 这只会执行一次.实际计算时间i=0而不是声明.
我<N; 这将执行N + 1次
i ++; 这将被执行N次
所以这个循环所需的操作数量是
{1+(N + 1)+ N} = 2N + 2
注意:这仍然可能是错误的,因为我对计算时间复杂度的理解没有信心
我想知道什么? …
有没有人对使用Chrome(V8)的Javascript中如何确定字符串的堆大小有很好的理解/解释?
我在堆转储中看到的一些示例:
1)具有不同@对象ID 的相同2个字符串(即"dt")的多个副本全部被指定为OneByteStrings.heapdump表示每个副本都有一个浅的&保留大小为32个字节.目前尚不清楚两个字节的字符串如何保留大小为32以及为什么字符串似乎没有被实现.
2)长对象路径字符串,长度为78个字符.所有字符都是utf8中的单个字节.它被归类为InternalizedString.它有一个184字节的保留大小.即使使用2字节字符编码仍然不能解释剩余的28个字节.为什么这些路径字符串占用了这么多空间?我可以想象另外4个字节(可能是8个)用于地址,另外4个用于存储字符串长度,但即使使用2个字节的字符编码,仍然会留下16个字节.