Preskoči na glavno vsebino
Učilnica FRI 23/24
  • Domov
  • Več
Zapri
Preklopi iskalni vnos
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Domov
Course Activities
Forumi Naloge Viri
Nedavno dostopani predmeti
You are not enrolled in any courses
  1. aps1uni
  2. Zlivanje

Zlivanje

Zahteve zaključka
Rok za oddajo: nedelja, 22. oktober 2023, 23.59

Pri urejanju z zlivanjem problem najprej razbijemo na podprobleme velikosti 1, nato pa podprobleme po parih zlivamo v urejeno zaporedje. Vendar se v naravnih podatkih pogosto pojavijo naraščajoča podzaporedja, kar lahko s pridom izkoristimo pri pospešitvi algoritma. Pri naravnem zlivanju v zaporedju najprej poiščemo urejena podzaporedja, kjer si elementi sledijo v nepadajočem vrstnem redu - čete. Nato čete po skupinah združujemo/zlivamo tako, da z začetkov čet zaporedoma pobiramo najmanjše elemente.

Simulirajte algoritem zunanjega urejanja z naravnim k-smernim zlivanjem. Podano je zaporedje z $N$ elementi $x_i$, število čet $K$, ki jih sočasno zlivamo, in število korakov $A$. Določite zaporedje po $A$ korakih. Če je zaporedje urejeno prej kot po $A$ korakih, postopek zaključite.

Omejitve podatkov:

  • $1 \leq N \leq 10^6$
  • $2 \leq K \leq 10$
  • $1 \leq A \leq 20$
  • $0 \leq x_i \leq 10^9$

Vhodni in izhodni podatki:

V prvi vrstici so podani število podatkov $N$, število čet $K$, ki jih sočasno zlivamo in število korakov $A$. Sledi $N$ vrstic, kjer $i$-ta vrstica opisuje $i$-ti podatek $x_i$.

V eni vrstici izpišite s presledki ločeno zaporedje po $A$ korakih zlivanja.

Primer vhoda:

25 3 2
13
18
7
8
17
3
16
9
10
11
11
0
2
19
14
5
6
15
4
5
12
3
18
1
3

Pravilen izhod:

0 2 3 3 4 5 5 6 7 8 9 10 11 11 12 13 14 15 16 17 18 18 19 1 3

Komentar:

Postopek za zgornji primer $N=25$, $K=3$ in $A=2$:

V zaporedju na sliki najdemo 10 čet.

Iskanje čet

V fazi zlivanja nato združujemo po 3 zaporedne čete tako, da zaporedno z začetkov čet izbiramo najmanjše elemente:

Zlivanje prvih treh čet

Rezultat zlivanja prvih treh čet

Nato nadaljujemo z drugo skupino $K$ čet, ...

Zlivanje druge skupine čet

Rezultat zlivnja prvih 6 čet

dokler nam čet ne zmanjka (zadnja skupina ima lahko manj kot $K$ čet). Po prvem koraku zlivanja, bo zgornje zaporedje izgledalo tako (barve označujejo četo iz katere smo dobili določen element):

Po prvem koraku

V drugem koraku nam ostanejo še štiri čete

Čete v drugem koraku

na katerih ponovimo postopek zlivanja $K$ zaporednih čet.

◄ koda s predavanj
zapiski - Abstraktni podatkovni tipi ►
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo Obvestilo o avtorskih pravicah
Stran poganja Moodle