我更喜欢尽可能少的正式定义和简单的数学.
algorithm complexity-theory big-o computer-science time-complexity
有时我看到Θ(n)带有奇怪的Θ符号,中间有一些东西,有时只有O(n).这只是打字的懒惰,因为没有人知道如何输入这个符号,或者它是否意味着不同的东西?
我问的更多关于这对我的代码意味着什么.我在数学上理解这些概念,我只是很难在概念上围绕它们的意思.例如,如果要对数据结构执行O(1)操作,我理解它必须执行的操作量不会增加,因为有更多项.而O(n)操作意味着您将对每个元素执行一组操作.有人可以在这里填空吗?
我看到你如何通过密钥访问你的收藏.但是,哈希函数本身在幕后有很多操作,不是吗?
假设你有一个很好的哈希函数非常有效,它仍然可能需要很多操作.
这可以解释一下吗?
什么是大O符号?你用它吗?
我猜错了这个大学课:D
有没有人使用它并给出一些他们使用它的真实例子?
我有以下例子.
<div class="parent">
<div data-id="5"></div>
<div data-id="2"></div>
<div data-id="3"></div>
<div data-id="1"></div>
<div data-id="4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我想按升序(1,2,3,4,5)订购这些div.我通常会做一个循环并将div添加到parentdiv中.然而,这意味着我总是对dom进行5次更改(无论div的顺序如何),每个div一次.
但是,你可以使用.insertBefore()方法只需2次更改即可正确排序div !
5,2,3,1,4
Insert 1 before 2
5,1,2,3,4
Insert 5 behind 4 (using .insertBefore() and .nextSibling)
1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)
问题1通过仅对DOM进行2次更改,我假设回流次数较少,使"2次更改"排序操作比"5次更改"操作更快.它是否正确?
问题2什么样的方法/算法能够找出只做插入1 before 2和5 behind 4?
问题3(奖金)这个"优化"算法是否会随着项目数量的增加而更快?范围10 - 100 - 1.000 - 10.000 - 100.000
也许澄清一下:我不是在寻找一种以最佳方式找出顺序(1,2,3,4,5)的方法.在某一点我知道订单,但我想再次比较div的顺序,然后THEN计算出最少的操作量.
如果我这样做:
client.get("foo", (err, res) => {
console.log(res);
});
Run Code Online (Sandbox Code Playgroud)
Redis 服务器中存储了数十亿个密钥,它是否会像只存储几个密钥一样快速返回数据?
或者我应该使用索引(如果 Redis 中有索引),就像在 MongoDB 中查询数据库一样?
采访编码采访:
如何实现incrementO(1)时间复杂度的无限二进制计数器?
我想要计算最右边的第一个和第二个位置0,但我不知道如何实现它.
"无限计数器"意味着您可以增加无限次(大于MAX_INT).