Prioriteitswachtrij voor Javascript

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

Python-prioriteitswachtrij: een gids

A slaat de Python-prioriteitswachtrijgegevens in een bepaalde volgorde op. Er zijn twee manieren om een prioriteitswachtrij in Python te implementeren:. De wachtrijklasse gebruiken en de heapq-module gebruiken

Misschien wilt u de gegevens sorteren op basis van de waarden ​​van elk item in de lijst. U wilt bijvoorbeeld dat de hoogste waarde als eerste in de lijst verschijnt en de laagste waarde in de laatste lijst.

is de wachtrij van wachten met prioriteit binnen. Een wachtrij van wachten met prioriteit is een gegevensbestand structuur die gegevens opslaat op basis van de waarde van de sleutel in oplopende volgorde. Dit geeft u gemakkelijk toegang tot de kleinste en de grootste waarde in de wachtrij.

Deze tutorial legt uit waarom u geen lijst zou moeten gebruiken om wachtrijen met prioriteitswachtrijen te creëren. We gaan je twee efficiëntere benaderingen laten zien die je kunt gebruiken om een Python-prioriteitswachtrij te maken.

Wat is een Python-prioriteitswachtrij?

Prioriteitswachtrijen zijn een aangepaste versie van een wachtrij die gegevens opslaat om welk item de hoogste prioriteit heeft. De prioriteit van elk item in een prioriteitswachtrij wordt bepaald op basis van de waarde van het item.

In de berekening zijn wachtrijen gegevensstructuren die elementen van het geheugen in FIFO (first in, first) volgorde hebben. -Uit). Er zijn een paar scenario`s waarin het gebruik van deze faciliteit nuttig kan zijn.

Stel bijvoorbeeld dat u een app voor het volgen van bestellingen voor een restaurant bouwt. De persoon die bestelt, moet eerst worden bediend in het bijzijn van de mensen door de bestelling later te plaatsen. . Om commando`s bij te houden, moet je een wachtrij gebruiken

Er zijn twee manieren om de prioriteitswachtrij in Python in te stellen:

  • Gebruik de PriorityQueue Queue-klasse
  • De heapq-module gebruiken

U kunt een prioriteitswachtrij instellen met behulp van een lijststructuur, maar deze strategie is minder efficiënt dan het gebruik van de wachtrijklasse of module PriorityQueue heapq

Prioriteitswachtrijplaat:. Queue.PriorityQueue

queue.PriorityQueue maakt een Python-prioriteitswachtrij. Deze klasse maakt deel uit van de Python-codebibliotheek. U moet de wachtrijbibliotheek om deze klasse te gebruiken. Om een item uit een PriorityQueue op te halen, kunt u de methode get () gebruiken.

Om toegang te krijgen tot de PriorityQueue-klasse, moeten we deze in onze code importeren, wat we kunnen doen met behulp van deze import Python-statement :

Stel dat we een wachtrij willen maken d ` voorrang wachten op tickethouders tegen con rt. We zouden het met deze code kunnen doen:

Onze code geeft als resultaat:

In onze code hebben we Om eerst de PriorityQueue-klasse te importeren uit de bestand bibliotheek, initialiseren we een prioriteitswachtrij genaamd ticket_holders. Vervolgens plaatsen we drie tupels in onze prioriteitswachtrij, de winkelticketnummers en de namen die aan een ticket zijn gekoppeld.

We gebruiken een Python-lus om elk item in de prioriteitswachtrij van ticket_holders te bekijken. Vervolgens krijgen we dit element met behulp van get ().

queue.PriorityQueue-methode is effectief en gemakkelijk te gebruiken, waardoor het een uitstekende keuze is wanneer u om een wachtrij met prioriteitswachtrij te creëren.

Python heapq-prioriteitswachtrijmodule

Met de heapq-module kunt u een Python-prioriteitswachtrij definiëren. Een heapq-gegevensstructuur verwijdert items in volgorde van prioriteit. De laagste waarde heeft de laagste prioriteit en de hoogste waarde heeft de hoogste prioriteit in de heapq-structuur

Voor de heapq-module kan gebruiken, moeten we deze eerst in onze code importeren met behulp van de volgende importinstructie:

Ofwel gaat u naar ons vorige voorbeeld. Stel dat we een prioriteitswachtrij willen creëren om informatie over kaarthouders bij een concert op te slaan. We zouden dit dan kunnen doen met behulp van de heapq-module en dit programma:

Onze code geeft als resultaat:

Eerst hebben we de heapq-bibliotheek geïmporteerd, daarna hebben we een Python-variabele genaamd ticket_holders. We hebben de methode heappush () gebruikt om drie tuples in onze prioriteitswachtrij te plaatsen. Deze wachtrij slaat de ticketnummers op voor elke tickethouder en de naam van elke tickethouder.

Vervolgens hebben we een lus gemaakt terwijl we door elk item in onze prioriteitswachtrij gaan. Deze lus verwijdert het element bovenaan de wachtrij van wachten met behulp van heappop (). Vervolgens wordt het verwijderde item afgedrukt naar de console. Zoals u kunt zien, worden alle items in onze wachtrij afgedrukt in volgorde van prioriteit.

Waarom u geen lijst zou moeten bijhouden

Technisch gezien kunt u een prioriteitswachtrij maken met de < een href="/python-network/">pythonlijst gegevensstructuur. Om dit te doen, moet u een lijst maken en deze vervolgens in oplopende volgorde sorteren.

Dit is echter een relatief inefficiënte manier om een wachtrij met prioriteit te behouden. Terwijl u de items in de lijst bewerkt, moet u de lijst opnieuw rangschikken, wat tijd kost.

U kunt een traditionele lijst gebruiken als prioriteitswachtrij als u slechts een paar waarden hoeft op te slaan. Maar als u een grotere wachtrij wilt maken, zijn lijsten geen goede optie

Laten we ter referentie eens kijken naar een voorbeeld van een prioriteitswachtrij met lijsten. Stel dat we een prioriteitswachtrij willen creëren waarin de volgorde van kaarthouders wordt opgeslagen die moeten worden toegelaten tot een eerste concert. We kunnen de volgende code gebruiken om deze wachtrij te maken:

Onze code geeft als resultaat:

we hebben een lijst gemaakt met de naam ticket_holders, we hebben drie tupels aan de lijst toegevoegd. Elke tuple bevatte een ticketnummer van de tickethouder en hun naam. Vervolgens hebben we de functie Python sort () gebruikt om de lijst met tickethouders in omgekeerde volgorde te sorteren.

We hebben een lange tijdlus gemaakt die door elk item in de lijst met tickethouders en het item bovenaan de lijst. Vervolgens drukt onze code het verwijderde item af naar de console.

Conclusie

De twee meest gebruikelijke om wachtrijprioriteit te creëren, zijn het gebruik van de heapq- of wachtrijmodule . PriorityQueue-klasse. Hoewel het technisch mogelijk is om een lijst als prioriteitswachtrij te gebruiken, werkt deze aanpak niet goed.

In deze tutorial is besproken, verwijzend naar voorbeelden, hoe u een prioriteitswachtrij in Python kunt maken. U bent nu uitgerust met de kennis om te beginnen met het bouwen van uw prioriteitswachtrijen als een Python-professional!

Voor meer tips over het leren van Python, zie onze Python Learning Guide < /a>.