python队列

目录

什么是队列

队列常用的函数

入队与出队的时间复杂度 

code


什么是队列

队列是项的有序集合,其中添加新项的一端称为队尾移除项的一端称为队首。当一个元素从队尾进入队列时,一直向队首移动,直到它成为下一个需要移除的元素为止。最近添加的元素必须在队尾等待。集合中存活时间最长的元素在队首,这种排序成为 FIFO,先进先出,也被成为先到先得。队列的最简单的例子是我们平时不时会参与的列。排队等待电影,在杂货店的收营台等待,
在自助餐厅排队等待(这样我们可以弹出托盘栈)。行为良好的线或队列是有限制的,因为它只有一条路,只有一条出路。不能插队,也不能离开。你只有等待了一定的时间才能到前面。

队列常用的函数

python队列_第1张图片

入队与出队的时间复杂度 

python队列基于list实现,入队基于list的insert(i)方法,所以时间复杂度为O(n),出队基于pop(),为O(1)

  • 入对为insert(0)
  • 出队是pop(),弹出末尾元素,为什么删除后面元素会更快,因为操作头部元素要变更其他元素的索引

python队列_第2张图片

code

from pythonds.basic.queue import Queue

en_nlogn = []
de_nlogn = []
en_q = Timer("test_queue.enqueue(1)", "from __main__ import test_queue")
de_q = Timer("test_queue.dequeue()", "from __main__ import test_queue")

x = list(range(100,4000,100))

for i in x:
    test_queue = Queue()
    for ii in range(i):
        test_queue.enqueue(ii)
    en_nlogn.append(en_q.timeit(number = 100))
    de_nlogn.append(de_q.timeit(number = 100))

plt.plot(x, en_nlogn,marker='o',label='en_nlogn')
plt.plot(x, de_nlogn,marker='o',label='de_nlogn')

plt.legend()  # 让图例生效
plt.xlabel('n size')  # X轴标签
plt.ylabel("time use")  # Y轴标签

plt.show()

 

你可能感兴趣的:(python算法)