问题标签 [complexity-theory]

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 投票
10 回答
2765 浏览

algorithm - 我可以降低它的计算复杂度吗?

好吧,我有这段代码大大减慢了程序的速度,因为它是线性复杂度,但被调用了很多次,使程序成为二次复杂度。如果可能的话,我想降低它的计算复杂度,否则我会尽可能地优化它。到目前为止,我已经减少到:

有人看到我错过的任何东西吗?谢谢!

编辑:我忘了提:n 总是一个素数。

编辑 2:这是我的新改进程序(感谢所有贡献!):

编辑 3:在真实环境中测试它快得多!好吧,这个问题似乎已解决,但有很多有用的答案。我还应该说,除了上述优化之外,我还使用 Python 字典记住了该函数......

0 投票
2 回答
704 浏览

complexity-theory - 使用规范模式真的可以降低代码的复杂性吗?

从我的阅读来看,规范模式似乎可以大大减少过滤数据所需的方法数量。您看到使用规范模式有什么好处?您是否注意到了不可预见的好处。相反,你遇到了什么陷阱?

0 投票
17 回答
157433 浏览

algorithm - 从数字数组中获取最小值或最大值的最佳方法是什么?

假设我有一个数字数组:[2,3,3,4,2,2,5,6,7,2]

在该数组中找到最小值或最大值的最佳方法是什么?

现在,为了获得最大值,我正在遍历数组,如果变量大于现有值,则将其重置为该值:

这似乎不是执行此操作的最佳执行方式(我尽量避免循环)。

0 投票
3 回答
7907 浏览

algorithm - 该算法的最坏情况时间复杂度是多少?

0 投票
9 回答
420 浏览

loops - 在复杂性分析中,为什么 ++ 被认为是 2 个操作?

在我的计算机科学 II 课上,教授认为 ++、--、*= 等是 2 个操作。但是,在组装级别,这并不是真正的两个操作。有人可以解释一下还是只是为了简单起见?

0 投票
12 回答
3716 浏览

php - Drupal 有哪些不足之处?

Drupal 是一个非常“无所不能”的 CMS。有些模块允许您添加几乎任何功能,这很棒。但是,感觉很多功能(v5 和 v6)似乎分散在各处,对用户来说不直观。作为一名开发人员,我留下的感觉是使用泡泡糖和细绳将网站拼凑在一起。

例如,要将文本添加到默认搜索框(单击时消失),您必须添加一些 jQuery 代码或覆盖主题。我还发现菜单系统比应有的复杂。

只有我有这种观点吗?你会对 Drupal 的核心做出哪些改变(如果有的话)?

0 投票
11 回答
6141 浏览

algorithm - 是否存在不依赖连续存储的 O(1) 随机访问数据结构?

经典的 O(1) 随机访问数据结构是数组。但是数组依赖于使用的编程语言来支持有保证的连续内存分配(因为数组依赖于能够获取基的简单偏移量来查找任何元素)。

这意味着语言必须具有关于内存是否连续的语义,而不是将其作为实现细节。因此,可能需要一个具有 O(1) 随机访问但不依赖于连续存储的数据结构。

有这样的事吗?

0 投票
5 回答
897 浏览

model-view-controller - 网络理论和MVC

我设计了一个不允许视图(表单)之间通信的 MVC。如果一个表单需要与另一个表单通信,它会在控制器上引发一个事件,其他表单可以订阅该事件。总体思路是将通信路径保持在最低限度,有助于降低复杂性。每个 View 都与 RootController 通信,RootController 是一个单例,或者是一个子控制器,View 通过 RootController 访问它。同样,它使通信路径保持向下,因为一切都通过 RootController。

这是否遵循一般网络理论,其中添加到网络的节点越多,网络就越复杂。“并且”,这些节点中的每一个直接通信越多,引入网络的复杂性就越大。谁能指出这个领域/理论到底叫什么?参考?

我对 MVC 所做的事情是否类似于让网络上的所有节点都通过一个中央节点相互通信?

0 投票
9 回答
509 浏览

arrays - 确定一个值是否在排序数组中的 O 时间是多少?

我有一个 5000 个整数的排序数组。我能以多快的速度判断一个随机整数是否是数组的成员?一般来说,C 和 Ruby 的答案会很好。

数组值的形式为

其中c可以是 1 到 5000 之间的任何整数。

例如:

0 投票
18 回答
16524 浏览

algorithm - 以编程方式获得代码的 Big-O 效率

我想知道是否有任何自动方法来确定(至少粗略地)给定函数的 Big-O 时间复杂度?

如果我绘制一个 O(n) 函数与一个 O(n lg n) 函数,我想我将能够直观地确定哪个是哪个;我认为必须有一些启发式解决方案可以自动完成。

有任何想法吗?

编辑:我很高兴找到一个半自动化的解决方案,只是想知道是否有某种方法可以避免进行完全手动分析。