15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

heappush(a, 3)

heappush(a, 7)

heappush(a, 4)

Os itens de maior prioridade (número mais baixo) são sempre removidos

primeiro.

print(heappop(a), heappop(a), heappop(a), heappop(a))

>>>

3 4 5 7

A lista resultante (um objeto list) é fácil de usar fora do heapq. Ao acessar o

índice 0 da pilha, sempre obtemos o item menor.

a = []

heappush(a, 5)

heappush(a, 3)

heappush(a, 7)

heappush(a, 4)

assert a[0] == nsmallest(1, a)[0] == 3

Chamar o método sort no objeto list não altera nada na pilha.

print('Before:', a)

a.sort()

print('After: ', a)

>>>

Before: [3, 4, 7, 5]

After: [3, 4, 5, 7]

Cada uma dessas operações de heapq consome um tempo logarítmico que é

proporcional ao comprimento da lista. Fazer a mesma operação com uma lista

comum do Python consome apenas tempo linear.

Bisseção

Procurar por um item usando o método index em um objeto list consome um

tempo que aumenta de forma linear à medida que a lista cresce.

x = list(range(10**6))

i = x.index(991234)

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!