Programmeerijana töötate erinevate andmestruktuuridega sõltuvalt teie projektide ulatusest. Üks selline mõiste on järjekorra andmestruktuur; järjekorrad on üliõpilaste jaoks hädavajalikud ja neid kasutatakse paljudes olulistes algoritmides. Nagu järjekordadel, on ka eelisjärjekordadel sama kontseptsioon, kuid neil on mõned põhimõttelised erinevused.

Loe edasi, et mõista järjekordi ja eelisjärjekordi.

Mis on järjekord?

Järjekord on lihtne andmestruktuur, millel on reaalsetes kodeerimisprojektides mitmesuguseid rakendusi. Andmestruktuurid on oma olemuselt abstraktsed, kuid lihtsuse huvides kujutame ette, et järjekorra andmestruktuuril on kahe erineva otsaga lineaarne kuju.

Aja keerukuse mõttes võimaldab järjekord sisestada (järjekorda) ja kustutada (dequeue) O (1) ajaga. Asümptootilise efektiivsuse tõttu on järjekorrad suurte andmekogumite jaoks tõhusad. Järjekorrad on oma olemuselt esimesed-esimesed-välja (FIFO), mis tähendab, et kõigepealt sisestatakse juurdepääs andmeüksusele. Seevastu virnadel on LIFO (last-in-first-out) iseloom ja neil on ainult üks avatud ots.

Pildikrediit: Vikipeedia

Kujutage ette piletijärjekorda kinos; iga saabuv uus klient ühineb järjekorraga ühes otsas. Ükshaaval ostab iga klient pileti ja lahkub esiotsa järjekorrast. Järjekorra andmestruktuur toimib täpselt nagu iga reaalse rea järjekord ning andmed sisestatakse (enqueue) ühte otsa ja eemaldatakse (dequeue) teisest otsast. Nüüd saate loodetavasti aru põhjustest, miks järjekorrad järgivad FIFO metoodikat.

Järjekorras on palju reaalseid kodeerimisrakendusi. Seda kasutatakse sagedamini rakendustes, kus andmeid ei ole vaja kohe töödelda, vaid pigem FIFO järjekorras. Plaatide ajastamine, asünkroonne andmeedastus, semafoorid on mõned tüüpilised rakendused. Järjekorda kasutavad ka ajaplaneerimise ülesanded, kes ees, see mees, kes prindib.

Mis on eelisjärjekord?

Prioriteetsete järjekord sarnaneb järjekorraga, kuid sellel on täiendavaid omadusi. Kui andmeelement on järjestatud prioriteetsesse järjekorda, antakse sellele prioriteedinumber. Vastupidiselt tavalise järjekorra eemaldamisele eemaldatakse kõrge prioriteediga andmeelemendid enne madala prioriteediga andmeelemente. Prioriteet asendab prioriteetsesse järjekorda saabumise järjekorra, mistõttu prioriteetsete järjekordade FIFO olemus ei ole järjepidev.

Seotud: Algoritmid, mida iga programmeerija peaks teadma

Programmeerijad saavad prioriteetset järjekorda rakendada mitmel viisil. Lihtne rakendamine on struktuuri/klassi andmeüksusega massiivi kasutamine ning andmeüksus sisaldab iga andmeelemendi ja andmete enda prioriteeti. Teine primitiivne prioriteedijärjekorra rakendamine on lingitud loendi kasutamine. Lingitud loendite kaudu rakendatavad prioriteetsed järjekorrad on funktsionaalsed, kuid nende toimivuse tõttu mitte ideaalsed.

Hunnik

Hunnikuga saate rakendada parema prioriteedijärjekorra. Kui mäletate, annavad binaarhunnikud maksimaalse või minimaalse elemendi 0 (1) aja jooksul ja sisestamine võtab aega ainult 0 (logN). Hunnikute abil annavad eelisjärjekorrad asümptootiliselt parema jõudluse, võrreldes järjekordade või massiividega.

Prioriteetses järjekorras on ka mitmesuguseid olulisi rakendusi. Prioriteetsed järjekorrad on üliolulised graafi algoritmides, nagu Prim'i minimaalne ulatuspuu ja Dijkstra lühima tee algoritm. Need on ideaalsed ka arvutiprotsessori (CPU) protsesside ajastamise algoritmides.

Õppige andmestruktuure

Järjekorrad ja eelisjärjekorrad on kõigi algajate jaoks olulised andmestruktuurid. On ülioluline, et õpilastel oleks mugav neid andmestruktuure rakendada ja neid erinevates projektides kasutada.

Teised andmestruktuurid, nagu hunnikud, virnad ja puud, on üliõpilaste ja spetsialistide jaoks võrdselt olulised. Samuti on väga tavaline, et küsitlejad küsitlevad taotlejaid andmestruktuuride kohta.

Olles seda artiklit lugenud, peaks teil nüüd olema hea ettekujutus järjekordade ja prioriteetsete järjekordade toimimisest. Kui kõik tundub endiselt veidi ebaselge, saate nende kasutamisega hakkama, kui omandate nende kasutamisel rohkem kogemusi.

JagaPiiksumaE -post
Hunnikud vs. Virnad: mis neid eristab?

Olete kuulnud kuhjadest ja korstnatest, kuid millal peaksite neid ühe asemel kasutama?

Loe edasi

Seotud teemad
  • Programmeerimine
  • Programmeerimine
  • Programmeerimisvahendid
  • Tehnoloogia
Autori kohta
M. Fahad Khawaja (50 artiklit avaldatud)

Fahad on MakeUseOfi kirjanik ja tegeleb praegu arvutiteaduse erialaga. Innuka tehnikakirjanikuna hoolitseb ta selle eest, et oleks kursis uusima tehnoloogiaga. Ta tunneb end eriti huvitatud jalgpallist ja tehnoloogiast.

Veel M. Fahad Khawaja

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin