我想知道Python中列表对象的pop方法的时间复杂度是多少(特别是CPython)。list.pop(N)的N值也会影响复杂度吗?
Pop()
因为最后一个元素应该是O(1),因为您只需要返回数组中最后一个元素所引用的元素并更新最后一个元素的索引。我希望pop()
任意元素为O(N),平均需要进行N
/ 2次运算,因为您需要将任何元素移到要在指针数组中向上移一个位置的元素之外。
问题内容: 我已经看到了此页面 https://wiki.python.org/moin/TimeComplexity, 但是我没有看到列表中的函数。什么是时间的时间复杂度的? 我对时间的实验表明,它适用于较大的尺寸。有人可以确认吗? timeit反转大小列表的时间 问题答案: 是的,您是对的,它是O(n),其中n- 列表长度。在此处查找更多信息:https : //www.ics.uci.edu
问题内容: 我在Java类中有一个私有的LinkedList,并且经常需要检索列表中的最后一个元素。列表需要缩放,所以我试图确定在进行更改时是否需要保留对最后一个元素的引用(以实现O(1)),或者LinkedList类是否已经通过getLast()调用完成了此操作。 LinkedList.getLast()的big-O成本 是多少 , 有记载吗? (即,我是否可以依靠此答案,或者即使它是O(1),
问题内容: 我注意到python官方网站上set操作的时间复杂度表。但是我只想问一下将列表转换为集合的时间复杂度是多少, 我有点知道这实际上是一个哈希表,但是它到底是如何工作的呢?那是O(n)吗? 问题答案: 是。遍历一个列表is并将每个元素添加到哈希集is ,因此总操作为。
问题内容: 我正在写一个看起来像这样的python函数 因此它被称为 我以为列表的索引访问权限为,但是很惊讶地发现对于大型列表,这比我预期的要慢得多。 那么,我的问题是如何实现python列表,以及以下代码的运行时复杂度是多少? 索引: 从结尾弹出: 从一开始就弹出: 扩展列表: 对于额外的信用,剪接或任意弹出。 问题答案: 在python Wiki上 有一个非常详细的表格,可以回答您的问题。 但
假设您使用一个数组实现了一个堆,并且每次数组满时,您都将其复制到一个数组,该数组的大小是数组的两倍。向堆中插入元素的摊销时间复杂度(对于最坏的情况)是多少? 我认为我们有(这是最坏情况下n个操作序列总成本的一个上界),那么根据一个公式摊销的复杂度是。 但我认为这是非常错误的,因为从直觉上很清楚,我应该得到或更低……那么我应该如何计算这个呢?
问题内容: 我当时在看这个pycon演讲,时间是34:30,发言人说,可以在中完成获取元素列表中最大的元素的操作。 那怎么可能?我的理解是,创建堆将是,但是其本身的复杂性是还是(以及(实际的算法是什么))? 问题答案: 扬声器在这种情况下是错误的。实际费用为。仅在可迭代的第一个元素上调用堆化。就是那个,但如果小于,则微不足道。然后,将所有剩余的元素一次通过添加到此“小堆”中。每次调用需要花费时间。