问题标签 [big-o]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
24 回答
479364 浏览

algorithm - Big O,您如何计算/近似它?

大多数拥有 CS 学位的人肯定知道Big O 代表什么。它可以帮助我们衡量算法的可扩展性。

但我很好奇,你如何计算或近似算法的复杂性?

0 投票
8 回答
1765 浏览

sorting - 我怎么写比 O(n!)

我为我的娱乐写了一个 O(n!) 排序,如果不完全替换它,就不能简单地优化它以更快地运行。[不,我不只是在物品被分类之前随机化这些物品]。

我如何编写更糟糕的 Big-O 排序,而不只是添加可以拉出以降低时间复杂度的无关垃圾?

http://en.wikipedia.org/wiki/Big_O_notation具有按增长顺序排序的各种时间复杂度。

编辑:我找到了代码,这是我的 O(n!) 确定性排序,带有有趣的 hack 以生成列表的所有组合的列表。我有一个稍微长一点的 get_all_combinations 版本,它返回一个可迭代的组合,但不幸的是我不能让它成为一个单一的语句。[希望我没有通过修复错别字和删除以下代码中的下划线来引入错误]

0 投票
3 回答
3879 浏览

python - 在哪里可以找到 Python 中内置序列类型的时间和空间复杂度

我一直无法找到这些信息的来源,没有自己查看 Python 源代码以确定对象是如何工作的。有谁知道我在哪里可以在网上找到这个?

0 投票
25 回答
40655 浏览

algorithm - 八岁的Big-O?

我正在询问更多关于这对我的代码意味着什么。我从数学上理解这些概念,我只是很难理解它们在概念上的含义。例如,如果要对数据结构执行 O(1) 操作,我知道它必须执行的操作数量不会增加,因为有更多项目。O(n) 操作意味着您将对每个元素执行一组操作。有人可以在这里填空吗?

  • 就像 O(n^2) 操作到底会做什么?
  • 如果一个操作是 O(n log(n)),这到底意味着什么?
  • 是否有人必须抽大麻才能写出 O(x!)?
0 投票
6 回答
147920 浏览

data-structures - 从常见数据结构中索引、插入和删除的时间复杂度是多少?

对于最常见的数据结构(包括数组、链表、哈希表等)的操作,没有可用的大 O 表示法的总结。

0 投票
12 回答
28356 浏览

optimization - 什么是大 O 符号?你用它吗?

什么是大 O 符号?你用它吗?

我想我错过了这门大学课:D

有没有人使用它并给出一些他们在哪里使用它的真实例子?


也可以看看:

八岁的Big-O?
Big O,您如何计算/近似它?
你在现实生活中应用了计算复杂性理论吗?

0 投票
8 回答
37658 浏览

java - 哪个清单 implementation will be the fastest for one pass write, read, then destroy?

What is the fastest list implementation (in java) in a scenario where the list will be created one element at a time then at a later point be read on

What is the fastest list implementation (in java) in a scenario where the list will be created one element at a time then at a later point be read one element at a time? The reads will be done with an iterator and then the list will then be destroyed.
I know that the Big O notation for get is O(1) and add is O(1) for an ArrayList, while LinkedList is O(n) for get and O(1) for add. Does the iterator behave with the same Big O notation?


Iterating through a linked list is O(1) per element.

The Big O runtime for each option is the same. Probably the ArrayList will be faster because of better memory locality, but you'd have to measure it to know for sure. Pick whatever makes the code clearest.

0 投票
4 回答
2560 浏览

algorithm - 平衡分配算法

我正在为松散耦合的集群编写一些代码。为了在作业期间实现最佳性能,我让集群在每次孩子进入或退出时重新映射其数据。这最终将成为可选的,但目前它默认执行其数据平衡。我的平衡基本上只是确保每个孩子的文件数量永远不会超过每台机器的平均文件数,再加上一个。如果除法不干净,则加一用于余数。而且由于余数总是小于孩子的数量[除了 0 的情况,但我们可以排除这种情况],平衡后的孩子最多 avg + 1。

一切似乎都很好,直到我意识到我的算法是 O(n!)。顺着孩子的名单往下看,找出平均数,余数,谁有太多,谁有太少。对于太多列表中的每个孩子,遍历列表,发送给每个太少的孩子。

有没有更好的解决方案?我觉得应该有。

编辑:这里有一些伪代码来展示我是如何导出 O(n!) 的:

编辑:O(n^2)。Foreach n, n => n*n => n^2。我想我今天早上没有喝足够的咖啡!;)

将来我想转向更灵活和有弹性的分布方法[权重和启发式],但现在,数据的统一分布是可行的。

0 投票
39 回答
30068 浏览

arrays - 确定数组是否包含n ... n + m的算法?

我在 Reddit 上看到了这个问题,并没有提出积极的解决方案,我认为在这里问这个问题是一个完美的问题。这是关于面试问题的线程:

编写一个方法,该方法接受一个大小为 m 的 int 数组,如果该数组由数字 n...n+m-1、该范围内的所有数字和该范围内的数字组成,则返回 (True/False)。不保证对数组进行排序。(例如,{2,3,4} 将返回 true。{1,3,1} 将返回 false,{1,2,4} 将返回 false。

我遇到的问题是我的面试官一直要求我进行优化(更快的 O(n)、更少的内存等),以至于他声称你可以使用恒定数量的数组在一次遍历中做到这一点记忆。从来没想过那个。

连同您的解决方案,请说明他们是否假定数组包含唯一项目。还要指出您的解决方案是否假定序列从 1 开始。(我稍微修改了问题以允许出现 2、3、4 的情况......)

编辑:我现在认为不存在处理重复的时间线性和空间常数算法。任何人都可以验证这一点吗?

重复问题归结为测试数组是否在 O(n) 时间、O(1) 空间中包含重复项。如果可以做到这一点,您可以先简单地测试,如果没有重复,则运行发布的算法。那么你能在 O(n) 时间 O(1) 空间中测试欺骗吗?

0 投票
6 回答
4602 浏览

algorithm - 是否有所有内容的 Big-O 符号的主列表?

是否有所有内容的 Big-O 符号的主列表?数据结构、算法、对每个执行的操作、平均情况、最坏情况等。