问题标签 [code-complexity]

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 投票
1 回答
49 浏览

sorting - 以下插入排序代码的复杂性是多少?

我为插入排序编写了以下代码。我决定通过函数调用来编写代码,而不是传统方法。但我无法找到代码的复杂性。请帮我找出时间和空间的复杂性,以及与传统方法有多少不同。

以下是插入排序的传统方法:

0 投票
1 回答
44 浏览

refactoring - 在不增加复杂性的情况下重构代码重复?

我有以下非常相似的代码的简单方法,我喜欢提取常见的位,但如果它增加了方法的复杂性,有人可以给我一个例子,甚至链接如何实现这一点?

这里有两个例子:

如您所见,这两个只是说明我的问题的一些非常简单的方法,它们具有几乎相同的查询字符串,我能想到的唯一选择是将它们转换为以下方法:

所以我看到的问题是,我现在减少了代码重复,将2个方法减少到1个,但同时我也通过引入更多参数创建了一个复杂度高于所需的方法。

此处未说明的一些关键事项:

1)查询可能更大,并且

2) 添加更多参数后,重构方法的复杂性可能会更高。

我对专家的问题是,在这种情况下是否有更好的方法来减少代码重复而不引入复杂性?还是将其保留为 2 个更简单的方法会更好?

谢谢!

0 投票
3 回答
170 浏览

oop - 我对抽象的理解正确吗?

我读过其他讨论抽象和封装的帖子,但我不确定我是否理解它们;或者也许我理解他们,但对他们内容的清晰性感到不满意。以下是我对抽象和封装的理解。它们在哪些方面准确/不准确/完整/不完整?

“抽象是程序员创建的数据类型,用于在原始数据类型不足时扩展语言。与原始数据类型一样,抽象具有列出它们所需的输入和返回的输出的规范,但规范并没有让程序员不知所措。函数和用于对输入进行操作的变量。类是抽象的一个例子。API 是抽象的另一个例子。

“封装是抽象数据类型(即类)彼此隔离的状态,因此它们的方法、函数和变量不会相互冲突,因此程序员可以轻松地在其他程序中重用现有的类,而不必担心这样做所以会干扰程序的其余部分(假设程序员正确地提供了所需的输入并正确处理了获得返回的数据)。”

0 投票
2 回答
2384 浏览

ecmascript-6 - 是否有任何代码复杂度计量工具可以很好地与 ES6 配合使用?

我的项目是 ES6 (webpack + babel)。柏拉图很棒,但不能与 ES6 一起使用。我看了看escomplex和一系列相关的包,但看起来作者不再维护这个,而且似乎它也不支持 ES6。

我正在使用ESLint 复杂性规则至少在出现问题时警告我(它设置为在 6 时发出警告),但它与漂亮的报告不同。

有什么建议么?

0 投票
2 回答
1724 浏览

python - 降低本程序的时间复杂度

问题 - 编写一个名为 answer(document, searchTerms) 的函数,它返回包含所有给定搜索词的文档的最短片段。搜索词可以任何顺序出现。

我下面的程序给出了正确的答案,但时间复杂度非常高,因为我正在做笛卡尔积。如果输入非常高,那么我无法清除这些测试用例。我无法降低这个程序的复杂性,任何帮助将不胜感激。谢谢

如果有人想克隆我的程序,这里是代码

0 投票
1 回答
345 浏览

algorithm - 嵌套循环,运行次数和复杂度

我有这 2 个代码,问题是找出 x=x+1 在每种情况下会运行多少次,因为 T1(n) 代表代码 1,T2(n) 代表代码 2。然后我必须找到 BIG每个人的 O,但我知道该怎么做,问题是我陷入了寻找 x = x + 1 将运行多少次(当然是 n )。

代码 1:

代码 2:

我真的很困惑,并且已经阅读了很多,所以我问是否有人可以帮助我,请分析解释我。

PS:我认为在代码 2 中,这for (i = 1; i <= sqrt(n); i++)将运行 n*log(n) 次,对吗?然后呢?

0 投票
0 回答
51 浏览

algorithm - 读取矩阵的算法

一种需要处理n x m可扩展矩阵的算法。例如,我有一个 3 秒的时间序列,其中包含以下值:2,1,4。我需要将其分解为一个3 x 4矩阵,其中 3 是时间序列的元素数,4 是最大值。生成的矩阵如下所示:

这是一个糟糕的解决方案还是仅被视为数据输入问题?问题是,

我是否需要在不丢失值的情况下从矩阵的每一行中为各种元素分配信息?

0 投票
1 回答
928 浏览

java - 是否有一种定义明确的方法来测量 XML 文件的大小和/或复杂性?

通常 LOC 是衡量程序源代码的广泛使用的指标之一。它非常适合测量 Java 或 C 代码的大小。然而,在我们当前的一个研究项目中,我们需要测量 XML 文件中代码的大小。由于 XML 格式的灵活性,LOC 似乎不太适合此目的。

我想知道是否有衡量 XML 代码大小或复杂性的好方法。我在网上搜索过,大多数已发表的研究工作都集中在定义 XML 模式的复杂性,DTD,而不是 XML 文件。例如:XML 文档集合的度量

我还发现有些工具/库可以根据不同的标签名称计算/列出节点或元素。如: 统计 xml 文件中的元素个数获取 XML 节点数的最简单方法

然而,我们的研究并不关心标签或元素的名称。我们只需要一个定义明确的指标来衡量 XML 文件中代码的大小或复杂性,尤其是 Android 布局文件和 AndroidManifest.xml 文件。

0 投票
1 回答
977 浏览

python - Algorithm - Grouping List in unique pairs

I'm having difficulties with an assignment I've received, and I am pretty sure the problem's text is flawed. I've translated it to this:


Consider a list x[1..2n] with elements from {1,2,..,m}, m < n. Propose and implement in Python an algorithm with a complexity of O(n) that groups the elements into pairs (pairs of (x[i],x[j]) with i < j) such as every element is present in a single pair. For each set of pairs, calculate the maximum sum of the pairs, then compare it with the rest of the sets. Return the set that has the minimum of those.


The things that strike me oddly are as follows:

  • Table contents definition It says that there are elements of 1..2n, from {1..m}, m < n. But if m < n, then there aren't enough elements to populate the list without duplicating some, which is not allowed. So then I would assume m >= 2n. Also, the example has n = 2 but uses elements that are greater than 1, so I assume that's what they meant.

  • O(n) complexity? So is there a way to combine them in a single loop? I can't think of anything.


My Calculations:

So obviously, I cannot use brute force and then figure out if it is valid after then. The formula I used to calculate the total possible ways is


Question:

Is this problem wrongly written and impossible to solve? If so, what conditions should be added or removed to make it feasible? If you are going to suggest some code in python, remember I cannot use any prebuilt functions of any kind. Thank you

0 投票
1 回答
696 浏览

java - cobertura 工具中的代码复杂性

我在 EclipseSDK 3.8.1 中使用 cobertura 工具。我能够运行覆盖率,但有没有任何选项可以通过此工具检查代码的复杂性?我只能查看代码覆盖率。