哈希表内部循环中插入的大 O 是什么?
what is the Big O of insertion in Hashtable inside loop?
考虑没有冲突的哈希表..
如果我有这段代码
for(int i=0;i<jewels.length();i++) #step 1
jewelSet.add(jewels.charAt(i)); #step 2
第 1 步大 O 是 O(n) .. 没关系
Step 2 Big O单独没有循环是Big(1),正确...
我的问题.. 循环中的第 2 步将导致 O(1) * n .. 意味着 .. O(n)
所以 Big O 发布的整个代码将是 O(2n) = O(n) ..这是否正确?
我的意思是..什么时候
Loop :
O(1)
经过多次循环.. O(1) 总和不会仍然是 O(1) .. 它将是 n * O(1) .. 正确 ???
因此,即使它是常量 BigO,但当它在循环数内时,整个代码算法的成本将是循环数 * BigO(1) .. 结果为 BigO(n)
当我们计算复杂度时,我们消除了公式中较小的因素,因为对于 large/infinite 输入,与 O(n) 相比,较小的因素 O(1) 可以忽略不计,这就是为什么时间复杂度为上面的算法只会是 O(n)。
考虑没有冲突的哈希表..
如果我有这段代码
for(int i=0;i<jewels.length();i++) #step 1
jewelSet.add(jewels.charAt(i)); #step 2
第 1 步大 O 是 O(n) .. 没关系
Step 2 Big O单独没有循环是Big(1),正确...
我的问题.. 循环中的第 2 步将导致 O(1) * n .. 意味着 .. O(n)
所以 Big O 发布的整个代码将是 O(2n) = O(n) ..这是否正确?
我的意思是..什么时候
Loop :
O(1)
经过多次循环.. O(1) 总和不会仍然是 O(1) .. 它将是 n * O(1) .. 正确 ???
因此,即使它是常量 BigO,但当它在循环数内时,整个代码算法的成本将是循环数 * BigO(1) .. 结果为 BigO(n)
当我们计算复杂度时,我们消除了公式中较小的因素,因为对于 large/infinite 输入,与 O(n) 相比,较小的因素 O(1) 可以忽略不计,这就是为什么时间复杂度为上面的算法只会是 O(n)。