当前位置: 首页 > 面试题库 >

为什么zpopmin时间复杂度是log n?

殷承恩
2023-03-14
问题内容

来自redis doc:

ZPOPMIN键[count]自5.0.0起可用。

时间复杂度:O(log(N)* M),其中N为排序集中元素的数量,M为弹出元素的数量。

删除并返回存储在key排序集中的得分最低的成员。

因此,我的问题是,如果列表已排序,为什么要使用log n,为什么不使用O(1)?


问题答案:

如果 列表 已排序,为什么要使用log n,为什么不使用O(1)?

如果使用列表实现排序集,则实际上您可以在每个元素的O(1)时间中完成此操作。然而,分类是一组实现(部分地)与跳跃列表数据结构,其确实的插入和缺失O(日志(N))的时间。



 类似资料:
  • 我已经阅读了这么多的资源,但仍然无法理解什么是时间复杂性。我阅读的参考资料基于各种公式,我理解用于表示时间复杂性,但我不知道如何表示。谁能请解释这个原则,以一个可以理解的明确的方式请给我。

  • 主要内容:时间复杂度,空间复杂度《 算法是什么》一节提到,解决一个问题的算法可能有多种,这种情况下,我们就必须对这些算法进行取舍,从中挑选出一个“最好”的。 算法本身是不分“好坏”的,所谓“最好”的算法,指的是最适合当前场景的算法。挑选算法时,主要考虑以下两方面因素: 执行效率:根据算法所编写的程序,执行时间越短,执行效率就越高; 占用的内存空间:不同算法编写出的程序,运行时占用的内存空间也不相同。如果实际场景中仅能使用少量的内

  • 我在比较两种决定一个数是否是素数的算法,我在看时间复杂度的上界,但我无法理解两者之间的时间复杂度差异,尽管在实践中一种算法比另一种快。 该伪代码以指数时间O(2^n)运行: 与前一个示例一样,该伪代码的运行时间只有前一个示例的一半,但我很难理解时间复杂度是否仍然是O(2^n):

  • 问题内容: 我已经阅读了很多资源,但仍然坚持了解时间的复杂性。我阅读的资源是基于各种公式的,我理解这是用来表示时间复杂度的,但是我不知道如何。任何人都可以以一种可以理解的清晰方式向我解释这个原则。 问题答案: 参考:如何计算时间复杂度算法 我找到了一篇与 如何计算任何算法或程序的时间复杂度* 有关的好文章 * 计算时间复杂度最常用的指标是Big O表示法。这消除了所有恒定因素,因此当N接近无穷大时

  • 假设T是具有n个节点和高度h的二叉查找树。T的每个节点x存储一个实数x。键。给出以下算法Func1(T. root)的最坏情况时间复杂度。你需要证明你的答案。 x.left() 对于最坏情况下的运行时,我认为这将是O(树的高度),因为这基本上类似于最小()或最大()二元搜索树算法。然而,它是递归的,所以我对是否将O(h)作为最坏的运行时编写有点犹豫。 当我考虑它时,最坏的情况是如果函数执行if(s

  • 问题内容: 从TimeComplexity文档中可以看出,Python的类型是使用数组实现的。 因此,如果正在使用数组并且进行了一些附加操作,最终您将不得不重新分配空间并将所有信息复制到新空间。 毕竟,这是O(1)最坏的情况吗? 问题答案: 如果查看链接文档中的脚注,您会发现它们包含一个警告: 这些操作依赖于“最坏情况摊销”的“摊销”部分。根据容器的历史记录,各个动作可能会花费惊人的时间。 使用摊