Questions tagged «time-complexity»

算法的时间复杂度根据问题输入的大小来量化算法运行所需的时间。通常使用大O表示法来表示算法的时间复杂度,这会抑制乘法常数和低阶项。

19
查找两个字符串之间的公共子字符串
我想比较2个字符串并保持匹配,在比较失败的地方分开。 因此,如果我有2个字符串- string1 = apples string2 = appleses answer = apples 另一个示例,因为字符串可能包含多个单词。 string1 = apple pie available string2 = apple pies answer = apple pie 我敢肯定有一种简单的Python方式可以做到这一点,但是我无法解决,感谢您的帮助和解释。

7
惰性评估和时间复杂度
我一直在研究stackoverflow非临时性惰性评估,这使我想到了Keegan McAllister的演讲:为什么要学习Haskell。在幻灯片8中,他显示了最小功能,定义为: minimum = head . sort 并指出其复杂度为O(n)。我不明白,如果按替换排序为O(nlog n),为什么说复杂度是线性的。帖子中提到的排序不能是线性的,因为它不假设任何有关数据的信息,这是线性排序方法(例如计数排序)所要求的。 懒惰的评估在这里扮演着神秘的角色吗?如果是这样,其背后的解释是什么?

5
哈希表运行时复杂度(插入,搜索和删除)
为什么我在哈希表上仍然看到这些函数的不同运行时复杂性? 在Wiki上,搜索和删除均为O(n)(我认为哈希表的要点是具有恒定的查找,因此,如果搜索为O(n)的意义是什么)。 在不久前的一些课程笔记中,我看到了许多复杂的情况,具体取决于某些细节,包括一个包含所有O(1)的细节。如果我可以全部获得O(1),为什么还要使用其他实现? 如果我以C ++或Java之类的语言使用标准哈希表,那么我期望的时间复杂度是多少?

5
了解Dijkstra算法的时间复杂度计算
据我了解,我使用下面给出的邻接表将Dijkstra算法的时间复杂度计算为big-O表示法。它没有按预期的方式出现,这使我逐步了解了它。 每个顶点可以连接到(V-1)个顶点,因此每个顶点的相邻边数为V-1。假设E表示连接到每个顶点的V-1边。 在最小堆中查找和更新每个相邻顶点的权重为O(log(V))+ O(1)或O(log(V))。 因此,从上面的步骤1和步骤2开始,更新顶点的所有相邻顶点的时间复杂度为E *(logV)。或E*logV。 因此,所有V个顶点的时间复杂度为V *(E * logV)即O(VElogV)。 但是Dijkstra算法的时间复杂度为O(ElogV)。为什么?

7
睡眠排序的时间复杂度是多少?
给定这种排序算法,您如何表达其时间复杂度? 最初显示在这里 (部分存档)。 #!/bin/bash function f() { sleep "$1" echo "$1" } while [ -n "$1" ] do f "$1" & shift done wait example usage: ./sleepsort.bash 5 3 6 3 6 3 1 4 7

4
Python“ for”循环的更好方法
我们都知道,在Python中执行语句一定次数的常见方法是使用for循环。 一般的做法是 # I am assuming iterated list is redundant. # Just the number of execution matters. for _ in range(count): pass 我相信没有人会争辩说上面的代码是通用的实现,但是还有另一种选择。通过增加引用来使用Python列表创建的速度。 # Uncommon way. for _ in [0] * count: pass 还有旧的while方法。 i = 0 while i < count: i += 1 我测试了这些方法的执行时间。这是代码。 import timeit repeat = 10 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.