规模有限;添加、删除和洗牌

本文关键字:删除 添加 | 更新日期: 2023-09-27 17:51:08

加入队列将是0(1)。那么去除效率是多少呢?我对此有点困惑。它是O(1)是有意义的,因为我们正在从头部移除,但是如果队列达到它的最大限制5,那么在插入新元素之前,队列将不得不以1为单位脱离队列,并将前4个元素移动/洗牌到前面,以便在后面(第5个位置)插入新元素。它还是0(1)吗?或者可能是O(n),因为洗牌方法。

我不需要代码或深入的解释,只要一个合乎逻辑的解释就可以了。

规模有限;添加、删除和洗牌

如果队列被实现为一个循环缓冲区,例如。net Queue类,那么这仍然是一个O(1)操作,即使您都在末尾添加一个项目并从头部删除一个项目。作为一个循环缓冲区,它不需要移动所有的项,它只需要调整两个整数索引,表示队列的开始/结束在缓冲区中的位置。

在此之上,如果容量为5,那么你可以说,即使你确实需要移动所有的项目,你也不会移动超过5。当n很小时,所有的都是0 (1)