Kas ir izlaišanas saraksts?
Izlaist saraksts ir varbūtības datu struktūra. Izlaist sarakstu izmanto, lai saglabātu sakārtotu elementu vai datu sarakstu ar saistīto sarakstu. Tas ļauj efektīvi skatīt elementu vai datu procesu. Vienā solī tas izlaiž vairākus visa saraksta elementus, tāpēc to sauc par izlaišanas sarakstu.
Izlaišanas saraksts ir saistītā saraksta paplašināta versija. Tas ļauj lietotājam ļoti ātri meklēt, noņemt un ievietot elementu. Tas sastāv no pamata saraksta, kas ietver elementu kopu, kas uztur turpmāko elementu saišu hierarhiju.
Izlaist saraksta struktūru
Tas ir veidots divos slāņos: zemākais slānis un augšējais slānis.
Izlaižamā saraksta zemākais slānis ir parasts sakārtots saistīto saraksts, un izlaižamā saraksta augšējie slāņi ir kā “ātrā līnija”, kurā elementi tiek izlaisti.
Izlaist saraksta sarežģītības tabula
Jā nē | Sarežģītība | Vidējais gadījums | Sliktākajā gadījumā |
---|---|---|---|
1. | Piekļuves sarežģītība | O(pieteikties) | O(n) |
2. | Meklēšanas sarežģītība | O(pieteikties) | O(n) |
3. | Dzēst sarežģītību | O(pieteikties) | O(n) |
4. | Ievietojiet sarežģītību | O(pieteikties) | O(n) |
5. | Telpas sarežģītība | - | O(nelogn) |
Izlaist saraksta darbība
Ņemsim piemēru, lai izprastu izlaišanas saraksta darbību. Šajā piemērā mums ir 14 mezgli, tādējādi šie mezgli ir sadalīti divos slāņos, kā parādīts diagrammā.
Apakšējais slānis ir kopēja līnija, kas savieno visus mezglus, un augšējais slānis ir ātrā līnija, kas savieno tikai galvenos mezglus, kā redzams diagrammā.
Pieņemsim, ka šajā piemērā vēlaties atrast 47. Jūs sāksiet meklēšanu no pirmā ātrās līnijas mezgla un turpināsiet darboties ātrās līnijas rindā, līdz atrodat mezglu, kas ir vienāds ar 47 vai vairāk par 47.
Piemērā var redzēt, ka 47 ekspresrindā neeksistē, tāpēc jūs meklējat mezglu, kas ir mazāks par 47, kas ir 40. Tagad jūs pārejat uz parasto rindu, izmantojot 40, un meklējat 47, kā parādīts diagrammā.
Piezīme. Kad atrodat šādu mezglu uz 'ātrās līnijas', jūs pārejat no šī mezgla uz 'parasto joslu', izmantojot rādītāju un meklējot mezglu parastajā rindā.
Izlaist sarakstu Pamatdarbības
Izlaižamajā sarakstā ir šādi darbību veidi.
Ievietošanas operācijas algoritms
Insertion (L, Key) local update [0...Max_Level + 1] a = L → header for i = L → level down to 0 do. while a → forward[i] → key forward[i] update[i] = a a = a → forward[0] lvl = random_Level() if lvl > L → level then for i = L → level + 1 to lvl do update[i] = L → header L → level = lvl a = makeNode(lvl, Key, value) for i = 0 to level do a → forward[i] = update[i] → forward[i] update[i] → forward[i] = a
Dzēšanas darbības algoritms
Deletion (L, Key) local update [0... Max_Level + 1] a = L → header for i = L → level down to 0 do. while a → forward[i] → key forward[i] update[i] = a a = a → forward[0] if a → key = Key then for i = 0 to L → level do if update[i] → forward[i] ? a then break update[i] → forward[i] = a → forward[i] free(a) while L → level > 0 and L → header → forward[L → level] = NIL do L → level = L → level - 1
Meklēšanas operācijas algoritms
Searching (L, SKey) a = L → header loop invariant: a → key level down to 0 do. while a → forward[i] → key forward[i] a = a → forward[0] if a → key = SKey then return a → value else return failure
1. piemērs: Izveidojiet izlaižamo sarakstu, mēs vēlamies ievietot šos taustiņus tukšajā izlaišanas sarakstā.
- 6 ar 1. līmeni.
- 29 ar 1. līmeni.
- 22 ar 4. līmeni.
- 9 ar 3. līmeni.
- 17 ar 1. līmeni.
- 4 ar 2. līmeni.
Gadi:
1. darbība: Ievietojiet 6 ar 1. līmeni
2. darbība: Ievietojiet 29 ar 1. līmeni
3. darbība: Ievietojiet 22 ar 4. līmeni
4. darbība: Ievietojiet 9 ar 3. līmeni
5. darbība: Ievietojiet 17 ar 1. līmeni
6. darbība: Ievietojiet 4 ar 2. līmeni
2. piemērs: Apsveriet šo piemēru, kur mēs vēlamies meklēt 17. atslēgu.
Gadi:
Izlaistā saraksta priekšrocības
- Ja vēlaties ievietot jaunu mezglu izlaižamajā sarakstā, tas ievietos mezglu ļoti ātri, jo izlaišanas sarakstā nav rotāciju.
- Izlaižamo sarakstu ir vienkārši ieviest, salīdzinot ar jaucējtabulu un bināro meklēšanas koku.
- Sarakstā ir ļoti vienkārši atrast mezglu, jo tas saglabā mezglus sakārtotā veidā.
- Izlaižamo sarakstu algoritmu var ļoti viegli modificēt konkrētākā struktūrā, piemēram, indeksējamos izlaižamos sarakstos, kokos vai prioritārās rindās.
- Izlaist saraksts ir stabils un uzticams saraksts.
Izlaistā saraksta trūkumi
- Tas prasa vairāk atmiņas nekā līdzsvarots koks.
- Apgrieztā meklēšana nav atļauta.
- Izlaistajā sarakstā mezgls tiek meklēts daudz lēnāk nekā saistītajā sarakstā.
Izlaist saraksta lietojumprogrammas
- To izmanto izplatītajās lietojumprogrammās, un tas attēlo norādes un sistēmu izplatītajās lietojumprogrammās.
- To izmanto, lai ieviestu dinamisku elastīgu vienlaicīgu rindu ar zemu bloķēšanas strīdu.
- To izmanto arī ar QMap veidņu klasi.
- Izlaišanas saraksta indeksēšana tiek izmantota, lai palaistu vidējās problēmas.
- Izlaišanas saraksts tiek izmantots delta kodējuma publicēšanai Lucene meklēšanā.