关于 Python 的时间复杂度

2019-11-26 16:51:39 +08:00
 Lsj777

新手入坑,请各位大佬指点下时间复杂度该怎么去区分呢?

比如 例子: a = [xxx,yyy,xxx] b = [yyy,xxx,yyy] c = set()

for i in a:
	c.add(i)

for i in a:
	c.add(i)
sorted(c)

以上例子的时间复杂度应该怎么计算呢?

小白再次谢谢各位大神们的支援了~~~

2950 次点击
所在节点    Python
7 条回复
lhx2008
2019-11-26 16:54:54 +08:00
各个数据结构的各个操作的时间复杂度,python 有一篇文档直接告诉你了,你就算一下就好了
Lsj777
2019-11-26 16:56:44 +08:00
@lhx2008 谢谢大佬 不过我想问的是 比如在两个 for 循环之后 sorted,这种时间复杂度应该怎么计算出来呢?是 2n+n*log(n) 吗?
lhx2008
2019-11-26 16:57:16 +08:00
当然,dict/set 类型 和 list 因为数据结构不同,对于同一个操作复杂度是有差异的,但是这两个大类的复杂度和教科书以及和大多数其他语言都是相同的
lhx2008
2019-11-26 16:58:13 +08:00
@Lsj777 你写的这个可以理解为执行了多少次,但是不是大 O 时间复杂度
Lsj777
2019-11-26 17:00:58 +08:00
@lhx2008 那正确的时间复杂度应该是多少呢? O(n*log(n))吗?
lhx2008
2019-11-26 17:01:47 +08:00
通常来说,你这整个时间复杂度是 O(nlogn) n=len(a)+len(b)
Lsj777
2019-11-26 17:03:25 +08:00
@lhx2008 谢谢大佬的帮助~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX