Algoritmusok s Adatszerkezetek I Rendez algoritmusok 2017 oktber
Algoritmusok és Adatszerkezetek I. Rendező algoritmusok 2017. október 31.
Rendezési feladat (sort) • Bemenet: egy n számból álló a 1, a 2, . . . , an tömb. • Kimenet: a bemenő tömb elemeinek olyan a 1, a 2, . . . , an permutációja (átrendezése), amelyre a 1 ≤ a 2 ≤. . . ≤ an
Miért fontosak a rendező algoritmusok? • Gyakran használt részfeladat • Számtalan megoldás → különböző szituációkban más és más (saját? ) • Sok probléma trivilás vagy gyors ha rendezett a bemenet → 0. lépésben rendezzünk – medián megtalálása – bináris keresés
Beszúró rendezés (insertion sort) O(n 2)
Összefésülő rendezés (merge sort) Felosztás: Az n elemű rendezendő sorozatot felosztja két n/2 elemű részsorozatra. Uralkodás: A két részsorozatot összefésülő rendezéssel rekurzív módon rendezi. Összevonás: Összefésüli a két részsorozatot, létrehozva a rendezett választ.
Összefésülő rendezés
Összefésülő rendezés futási ideje – Mester módszer a=2 b=2 f(n)=n 2. eset T(n) = Θ(nlogn) f(n) = Θ(nlog 22) = Θ(n) https: //visualgo. net/en/sorting
Helyben rendezés Rendező algoritmusok memóriaigénye Beszúró rendezés O(1) Összefésülő rendezés O(n) Helyben rendezés: bemeneti tömbön felül legfeljebb konstans méretű tár
Kupac https: //visualgo. net/en/heap
Kupacrendezés (heap sort) O(nlogn) Helyben rendezés
Rendezés bináris keresőfával (tree sort) if x≠NIL then FABEJÁRÁS(bal[x]) muvelet(kulcs[x]) FABEJÁRÁS(jobb[x]) 2 35 5 7 8 piros-fekete fával: O(nlogn) Helyben rendezés, de pointerek miatt nagyobb tárigény
Gyorsrendezés (quick sort) Felosztás: Az A[p…r] tömböt ke t (esetleg üres) A[p…q-1] e s A[q+1…r] re szto mbre osztjuk u gy, hogy az A[p… q− 1] minden eleme kisebb vagy egyenlő A[q]-na l és A[q+1…r] minden eleme nagyobb A[q]-na l. A q index kisza mi ta sa re sze a felosztó elja ra snak
Gyorsrendezés (quick sort) • Uralkoda s: Az A[p…q− 1] e s A[q+1…r] re szto mbo ket a gyorsrendeze s rekurzi v hi va sa val rendezzu k. • O sszevona s: helyben rendezés, nincs szu kse g egyesi te sre
pivot (őrszem) bárhogyan választhajuk, pl. első elem vagy véletlen
Gyorsrendezés helyessége
Gyorsrendezés futásideje Legrosszabb eset: minden FELOSZT egy 0 és egy n-1 méretű résztömbre oszt Legjobb eset: minden FELOSZT felezi a tömböt
Gyorsrendezés futásideje • Átlagos eset: közelebb a legjobb esethez • bármilyen állandó arányú felosztás esetén O(nlogn), pl. • nem baj ha vannak rossz felosztások
Összehasonlító rendezések • Összehasonlító rendezés: rendezéshez elemek párjainak < = > műveleteit használjuk • Eddigi rendező algoritmusok mind összehasonlító rendezések voltak
Összehasonlító rendezések futásidejének alsó korlátja Ba rmely összehasonli tó rendező algoritmus a legrosszabb esetben Ω(nlogn) összehasonli ta st ve gez!
Leszámláló rendezés (counting sort) HA az n bemeneti elem mindegyike 0 e s k közötti ege sz sza m, ahol k egy ege sz. Θ(n+k) tár: n+k
Rendezések stabilitása Egy rendezés stabil ha az azonos e rte kű elemek ugyanabban a sorrendben jelennek meg a kimeneti tömbben, mint ahogyan a bemeneti tömbben szerepeltek.
Számjegyes rendezés (radix sort) Rendezzünk dátumokat év, hónap, nap szerint! Megoldás 1: összehasonlító rendezés Megoldás 2: 3 db stabil rendezés először napok, majd hónapok, végül évek szerint
Számjegyes rendezés (radix sort) Számjegyes rendezés: legalacsonyabb helyiértéktől legmagasabbig minden lépésben egy stabil renezés
Edényrendezés (bucket sort) HA a rendezendő tömb elemeinek eloszlása egyenletes
Edényrendezés (bucket sort) ni az i-edik edénybe eső elemek számának várható értéke
Engem válassz ha közel rendezett a tömb vagy nagyon kicsi (n<10) bemenet esetén! Beszúró Összefésülő Kupac Bináris Fa Gyors Leszámoló Számjegyes Edény Legjobb Átlagos Legrosszabb Tár n n 2 1 n log. Ha n stabilitásra n log nvágysznengem log n válassz!n hozz magaddal memóriát is… 1 Elvileg an gyorsrendezés n log. Csak n én vagyok n log n legnagyobb riválisa, túl sok cserét n log n n logsem n deszeret n log n a 1 Engem senki mert csinálok a gyakorlatban n log n n logfákat n memóriában n 2 gyakorlatban tárolni 1 drága n+k n+k nk d(n+k) Ha nem tudsz semmit adatról én értékek Engem válassz haaz a lehetséges 2 n n vagyok általában leggyorsabb halmaza kicsia(k)! (összehasonlító rendezés)! Én segítek ha vagyok speciálisstabil… struktúrát (pl. Viszont nem dátum) kell rendezned! Ha az értékek eloszlása egyenletes én vagyok a legjobb! nk n Stabil
- Slides: 30