Python.
Creació d'un munt senzill
El heapify (iterable) :- Aquesta funció s'utilitza per convertir l'iterable en un munt estructura de dades. és a dir, en ordre de pila.
Python 3
# importing 'heapq' to implement heap queue> import> heapq> # initializing list> li> => [> 5> ,> 7> ,> 9> ,> 1> ,> 3> ]> # using heapify to convert list into heap> heapq.heapify(li)> # printing created heap> print> (> 'The created heap is : '> ,(> list> (li)))> |
>
>
matriu de retorn de javaSortida
The created heap is : [1, 3, 9, 7, 5]>
Afegir i desplegar elements de manera eficient
- heappush(heap, ele): Aquesta funció s'utilitza per inserir l'element esmentat als seus arguments en un munt. El s'ajusta l'ordre, de manera que es mantingui l'estructura de la pila. heappop(heap): Aquesta funció s'utilitza per eliminar i retornar l'element més petit del munt. L'ordre s'ajusta, de manera que es manté l'estructura del munt.
Python 3
com crear una matriu en java
# importing 'heapq' to implement heap queue> import> heapq> # initializing list> li> => [> 5> ,> 7> ,> 9> ,> 1> ,> 3> ]> # using heapify to convert list into heap> heapq.heapify(li)> # printing created heap> print> (> 'The created heap is : '> , end> => '')> print> (> list> (li))> # using heappush() to push elements into heap> # pushes 4> heapq.heappush(li,> 4> )> # printing modified heap> print> (> 'The modified heap after push is : '> , end> => '')> print> (> list> (li))> # using heappop() to pop smallest element> print> (> 'The popped and smallest element is : '> , end> => '')> print> (heapq.heappop(li))> |
>
>Sortida
The created heap is : [1, 3, 9, 7, 5] The modified heap after push is : [1, 3, 4, 7, 5, 9] The popped and smallest element is : 1>
Afegeix i esclata simultàniament
- heappushpop(heap, ele):- Aquesta funció combina el funcionament de les operacions push i pop en una sola declaració, augmentant l'eficiència. L'ordre de pila es manté després d'aquesta operació. heapreplace(heap, ele):- Aquesta funció també insereix i mostra elements en una instrucció, però és diferent de la funció anterior. En això, primer apareix l'element i després s'empeny l'element. és a dir, es pot retornar el valor més gran que el valor empès. heapreplace() retorna el valor més petit originalment a l'emmagatzematge dinàmic independentment de l'element empès a diferència de heappushpop().
Python 3
nombre sencer doble java
# importing 'heapq' to implement heap queue> import> heapq> # initializing list 1> li1> => [> 5> ,> 1> ,> 9> ,> 4> ,> 3> ]> # initializing list 2> li2> => [> 5> ,> 7> ,> 9> ,> 4> ,> 3> ]> # using heapify() to convert list into heap> heapq.heapify(li1)> heapq.heapify(li2)> # using heappushpop() to push and pop items simultaneously> # pops 2> print> (> 'The popped item using heappushpop() is : '> , end> => '')> print> (heapq.heappushpop(li1,> 2> ))> # using heapreplace() to push and pop items simultaneously> # pops 3> print> (> 'The popped item using heapreplace() is : '> , end> => '')> print> (heapq.heapreplace(li2,> 2> ))> |
>
>Sortida
The popped item using heappushpop() is : 1 The popped item using heapreplace() is : 3>
Trobeu els elements més grans i més petits de Heap a Python
- nlargest(k, iterable, key = fun): Aquesta funció s'utilitza per retornar els k elements més grans de l'iterable especificat i satisfer la clau si s'esmenta. nsmallest(k, iterable, clau = divertit): aquesta funció s'utilitza per retornar els k elements més petits de l'iterable especificat i satisfer la clau si s'esmenta.
Python 3
data java actual
# Python code to demonstrate working of> # nlargest() and nsmallest()> # importing 'heapq' to implement heap queue> import> heapq> # initializing list> li1> => [> 6> ,> 7> ,> 9> ,> 4> ,> 3> ,> 5> ,> 8> ,> 10> ,> 1> ]> # using heapify() to convert list into heap> heapq.heapify(li1)> # using nlargest to print 3 largest numbers> # prints 10, 9 and 8> print> (> 'The 3 largest numbers in list are : '> , end> => '')> print> (heapq.nlargest(> 3> , li1))> # using nsmallest to print 3 smallest numbers> # prints 1, 3 and 4> print> (> 'The 3 smallest numbers in list are : '> , end> => '')> print> (heapq.nsmallest(> 3> , li1))> |
>
>Sortida
The 3 largest numbers in list are : [10, 9, 8] The 3 smallest numbers in list are : [1, 3, 4]>
Exemple:
Python 3
import> heapq> # Initialize a list with some values> values> => [> 5> ,> 1> ,> 3> ,> 7> ,> 4> ,> 2> ]> # Convert the list into a heap> heapq.heapify(values)> # Print the heap> print> (> 'Heap:'> , values)> # Add a new value to the heap> heapq.heappush(values,> 6> )> # Print the updated heap> print> (> 'Heap after push:'> , values)> # Remove and return the smallest element from the heap> smallest> => heapq.heappop(values)> # Print the smallest element and the updated heap> print> (> 'Smallest element:'> , smallest)> print> (> 'Heap after pop:'> , values)> # Get the n smallest elements from the heap> n_smallest> => heapq.nsmallest(> 3> , values)> # Print the n smallest elements> print> (> 'Smallest 3 elements:'> , n_smallest)> # Get the n largest elements from the heap> n_largest> => heapq.nlargest(> 2> , values)> # Print the n largest elements> print> (> 'Largest 2 elements:'> , n_largest)> |
>
>Sortida
Heap: [1, 4, 2, 7, 5, 3] Heap after push: [1, 4, 2, 7, 5, 3, 6] Smallest element: 1 Heap after pop: [2, 4, 3, 7, 5, 6] Smallest 3 elements: [2, 3, 4] Largest 2 elements: [7, 6]>
Aquest programa crea una cua de pila utilitzant el mòdul heapq a Python i realitza diverses operacions com ara convertir una llista en una pila, afegir un nou valor a la pila, eliminar l'element més petit de la pila, obtenir els n elements més petits i n més grans de el munt.
convertir int en java doble
Nota que el mòdul heapq a Python proporciona funcions per realitzar operacions d'emmagatzematge dinàmic en llistes al seu lloc, sense crear una estructura de dades separada per a l'heap. El mòdul heapq és eficient i fàcil d'utilitzar, per la qual cosa és una opció popular per implementar cues de prioritat i altres estructures de dades a Python.
Avantatges d'utilitzar una cua heap (o heapq) a Python:
- Eficient: una cua de pila és una estructura de dades altament eficient per gestionar les cues i els munts de prioritat a Python. Proporciona complexitat de temps logarítmica per a moltes operacions, cosa que la converteix en una opció popular per a moltes aplicacions. Eficient d'espai: les cues d'heap són eficients en l'espai, ja que emmagatzemen elements en una representació basada en matrius, minimitzant la sobrecàrrega associada a estructures de dades basades en nodes, com ara llistes enllaçades. Fàcil d'utilitzar: les cues de pila a Python són fàcils d'utilitzar, amb una API senzilla i intuïtiva que facilita la realització d'operacions bàsiques com la inserció, la supressió i la recuperació d'elements de la pila. Flexible: les cues de pila a Python es poden utilitzar per implementar diverses estructures de dades, com ara cues de prioritat, munts i arbres binaris, fent-les una eina versàtil per a moltes aplicacions.
Desavantatges d'utilitzar una cua heap (o heapq) a Python:
- Funcionalitat limitada: les cues d'emmagatzematge munt estan dissenyades principalment per gestionar cues i munts de prioritat, i poden no ser adequades per a estructures i algorismes de dades més complexos. Sense accés aleatori: les cues d'emmagatzematge dinàmic no admeten l'accés aleatori als elements, cosa que dificulta l'accés als elements del mig del munt o modificar els elements que no es troben a la part superior del munt. Sense classificació: les cues de pila no admeten l'ordenació, de manera que si necessiteu ordenar els elements en un ordre específic, haureu d'utilitzar una estructura de dades o un algorisme diferent. No són segures per a fils: les cues d'heap no són segures per a fils, el que significa que poden no ser adequades per utilitzar-les en aplicacions multifils on la sincronització de dades és crítica.
En general, les cues de pila són una estructura de dades molt eficient i flexible per gestionar les cues i els munts de prioritat a Python, però poden tenir una funcionalitat limitada i pot ser que no siguin adequades per a totes les aplicacions.