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

时间:2019-01-26 17:44:04

标签: redis

来自redis文档:

ZPOPMIN键[count] 自5.0.0起可用。

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

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

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

2 个答案:

答案 0 :(得分:0)

按得分访问排序集中的任何元素的时间复杂度为O(log(N)),因此命令的复杂度。

答案 1 :(得分:0)

  

如果对 列表 进行了排序,为什么需要log n,为什么不使用O(1)?

如果使用列表实现排序集,则实际上您可以在每个元素的O(1)时间中完成此操作。但是,排序后的集合是implemented(部分)具有skip list数据结构,该结构在O(log(N))时间内进行插入和删除。