Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Hasonló dokumentumok
Algoritmusok és adatszerkezetek gyakorlat 07

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Kupac adatszerkezet. 1. ábra.

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Számjegyes vagy radix rendezés

Algoritmuselmélet 2. előadás

1. ábra. Számláló rendezés

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

15. A VERSENYRENDEZÉS

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Rendezések. Összehasonlító rendezések

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Adatszerkezetek és algoritmusok

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Párhuzamos algoritmusok

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Számláló rendezés. Példa

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Példák ekvivalencia relációra (TÉTELként kell tudni ezeket zárthelyin, vizsgán):

Haladó rendezések. PPT 2007/2008 tavasz.

Algoritmusok és adatszerkezetek I. 10. előadás

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Balogh Edina Árapasztó tározók működésének kockázatalapú elemzése PhD értekezés Témavezető: Dr. Koncsos László egyetemi tanár

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Példa 30 14, 22 55,

4 Approximációs algoritmusok szorzatalakú hálózatok esetén

Variancia-analízis (ANOVA) Mekkora a tévedés esélye? A tévedés esélye Miért nem csinálunk kétmintás t-próbákat?

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

d(f(x), f(y)) q d(x, y), ahol 0 q < 1.

INFORMATIKA javítókulcs 2016

Békefi Zoltán. Közlekedési létesítmények élettartamra vonatkozó hatékonyság vizsgálati módszereinek fejlesztése. PhD Disszertáció

Relációk. Vázlat. Példák direkt szorzatra

Vázlat. Relációk. Példák direkt szorzatra

A bankközi jutalék (MIF) elő- és utóélete a bankkártyapiacon. A bankközi jutalék létező és nem létező versenyhatásai a Visa és a Mastercard ügyek

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

s n s x A m és az átlag Standard hiba A m becslése Információ tartalom Átlag Konfidencia intervallum Pont becslés Intervallum becslés

8. Programozási tételek felsoroló típusokra

Egyesíthető prioritási sor

MEZŐGAZDASÁGI TERMÉKEK FELVÁSÁRLÁSI FOLYAMATÁNAK SZIMULÁCIÓJA, KÜLÖNÖS TEKINTETTEL A CUKORRÉPÁRA OTKA

Hierarchikus adatszerkezetek

7 7, ,22 13,22 13, ,28

NKFP6-BKOMSZ05. Célzott mérőhálózat létrehozása a globális klímaváltozás magyarországi hatásainak nagypontosságú nyomon követésére. II.

Statisztikai. Statisztika Sportszervező BSc képzés (levelező tagozat) Témakörök. Statisztikai alapfogalmak. Statisztika fogalma. Statisztika fogalma

4 2 lapultsági együttható =

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

10. Alakzatok és minták detektálása

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Optikai elmozdulás érzékelő illesztése STMF4 mikrovezérlőhöz és robot helyzetérzékelése. Szakdolgozat

PROGRAMOZÁSI TÉTELEK

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Közismereti informatika I. 4. előadás

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

Programozás alapjai II. (7. ea) C++

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Az elektromos kölcsönhatás

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Gyakori elemhalmazok kinyerése

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Az absztrakt adattípus egy (E,M) párral adható meg, ahol E az értékhalmaz, M a műveletek halmaza. Fő tulajdonságok. Verem

Adatszerkezet - műveletek

Tanult nem paraméteres próbák, és hogy milyen probléma megoldására szolgálnak.

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

Algoritmusok és adatszerkezetek II.

Philosophiae Doctores. A sorozatban megjelent kötetek listája a kötet végén található

Adatszerkezetek 7a. Dr. IványiPéter

METROLÓGIA ÉS HIBASZÁMíTÁS

Kidolgozott feladatok a nemparaméteres statisztika témaköréből

The original laser distance meter. The original laser distance meter

XI. ERDÉLYI TUDOMÁNYOS DIÁKKÖRI KONFERENCIA

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Számítógép-architektúrák II.

Önszervező bináris keresőfák

Általános algoritmustervezési módszerek

17. A 2-3 fák és B-fák. 2-3 fák

Schlüter -KERDI-BOARD. Közvetlenűl burkolható felületű építőlemez, többrétegű vízszigetelés

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

II. Rákóczi Ferenc Kárpátaljai Magyar Fıiskola. Pataki Gábor. STATISZTIKA I. Jegyzet

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Információs Technológia

Másolásra épülő algoritmusok

Gyakorló feladatok ZH-ra

Hierarchikus adatszerkezetek

Átírás:

Algortmusok és adatszerkezetek gyakorlat 09 Rendezések Néhány órával ezelőtt megsmerkedtünk már a Merge Sort rendező algortmussal. A Merge Sort-ról tuduk, hogy a legrosszabb eset dőgénye O(n log n). Tetszőleges (általános célú) rendezőalgortmusra a elenleg legobb dőgény alsó korláta Ω(n log n). Felmerülhet a kérdés, hogy ha a Merge Sort dőgénye éppen enny, mért léteznek más algortmusok s. Eddg csak az dőgénnyel foglalkoztunk, vszont a rendezőalgortmusok tárgénye elég eltérőek lehetnek. Merge Sort Algortmus: MERGESORT (A[1,..., n]) 1. Ha n = 1 return A. Rekurzívan alkalmazzuk a lsta két felére: MERGESORT (A[1,..., n/ ]) és MERGESORT (A[ n/ + 1,..., n]). A lstát,,fésülük össze Időgény: O(n log n) (legrosszabb, legobb és átlagos esetben s) Tárgény: O(n) plusz tárat gényel, ha az adathalmazt tömbben tároluk (ugyanannyt, mnt a rendezendő nput elemszáma) ezért nagy elemszámú tömbben tárolt nputhoz nem aánlott a használata A lehető legobb választás, ha láncolt lstát kell rendezn, mert ekkor csak O(1) a plusz tárgény Stabl rendezés, am azt elent, hogy az nputban két egyenlő elem eredet egymáshoz képest sorrende megmarad a rendezés után s Quck Sort Paradgma: Dvde & Conquer 1. Dvde: Osszuk fel a tömböt két résztömbre egy x pvot elem szernt a következőképpen: azok az elemek, amk ksebb egyenlőek a pvotnál legyenek előtte, amk nagyobb egyenlőek nála, legyenek utána.(a pvottal egyenlő elemek bármelyk résztömbbe kerülhetnek.) x x x. Conquer: Rekurzívan rendezzük a két résztömböt.. Combne: Trváls. 1 Gelle Ktt

Algortmus: QuckSort (A, p, r ) P a r t t o n (A, p, q ) f ( p < r ) x=a[ p ] q = P a r t t o n (A, p, r ) =p QuckSort (A, p, q 1) := r QuckSort (A, q+1, r ) whle ( true ){ whle (A[ ]>=x&&(< ) ) := 1 whle (A[ ]<=x&&(< ) ) := +1 f ( <= ) break e l s e c s e r e (A[ ],A[ ] ) } c s e r e (A[ p ],A[ ] ) return Meghívása: QuckSort(A, 1, n) Időgény: O(n ) (legrosszabb eset), O(n log n) (legobb és átlagos eset) Tárgény: O(log n) plusz tárat gényel Nem stabl rendezés A gyakorlatban általában kétszer olyan gyors, mnt a Merge Sort Countng Sort Akkor használuk, ha a tömbben legfelebb k-féle érték szerepel Algortmus: CountngSort(A[1,..., n], k) 1. Hozzunk létre egy k elemű tömböt és számoluk bele össze, melyk elemből menny van. Módosítsuk úgy az értékeket, hogy mnden tömbelem az őt megelőzőek összegét tartalmazza. Tegyünk mnden nput elemet a helyére a kmenetben úgy, hogy véggmegyünk az nputon és a segédben található ndexre tesszük, mad növelük a számlálóát Időgény: O(n + k). Akkor érdemes használn, ha k = O(n), mert akkor a futásdő O(n) Tárgény: O(n + k) Stabl rendezés Külső rendezés Gelle Ktt

1. Feladat Rendezzük az,, 9, 17, 77, 1,,, 0 elemeket tartalmazó tömböt a QuckSort algortmussal. Megoldás 9 17 77 1 0 9 17 77 1 0 swap 0 17 77 1 9 swap 0 17 1 77 9 swap 1 0 17 77 9 1 0 17 77 9 1 0 17 77 9 swap swap 17 0 1 77 9 17 0 9 17 0 0 swap 0 Gelle Ktt

. Feladat Rendezzük a,,, 1,,, 1, elemekből álló tömböt Leszámláló rendezéssel. Megoldás In: 1 1 Gyűtsük össze, mből menny van. A paraméterek: n = és k =. Vegyünk fel segédnek egy k + 1 elemű tömböt. f o r x n nput : count [ key ( x ) ] += 1 C: 0 0 0 1 Módosítsuk úgy az értékeket, hogy mnden elem a nála <-ek összegét tartalmazza (prefxösszeg tömbbé alakítás): t o t a l = 0 f o r n range ( k+1): // = 0, 1,... k oldcount = count [ ] count [ ] = t o t a l t o t a l += oldcount C: 0 0 7 7 Haladunk végg az nputon és rakuk arra az ndexre, ahol a segédtömbben szerepel, mad növelük a számláló értékét. f o r x n nput : output [ count [ key ( x ) ] ] = x count [ key ( x ) ] += 1 In: 1 1 In: 1 1 C: 0 0 7 7 C: 0 1 7 C[1] + + C[] + + C[] + + C[] + + Out: 1 C[1] + + C[] + + C[] + + C[] + + Out: 1 1 Gelle Ktt

A Countng sort O(n + k) dőgénnyel alkalmazható láncolt lsták esetén s úgy, hogy a leszámláláshoz ettől függetlenül tömböt használunk. Ktereszthető olyan ntervallumokra s, amkor nem 0 az alsó értékhatár. módosítanánk a 0-tól eltérő alsó határ kezelésére az algortmust? Hogyan Bnárs kupac Bnárs fa: Olyan fa, ahol mnden csúcsnak legfelebb gyereke van Bnárs kupac: madnem teles bnárs fa, amely mnden szntén telesen ktöltött kvéve a legalacsonyabb szntet, ahol balról obbra haladva egy adott csúcsg vannak elemek A fát egy tömbben reprezentáluk, mnden elem a sznt szernt beárás szernt sorszámának megfelelő eleme a tömbnek. A kupacot reprezentáló A tömbhöz két értéket rendelünk: hossz(a) a tömb mérete, kupacmeret(a) a kupac elemenek száma. A kupac gyökere A[0], a szerkezet kapcsolatok egyszerűen számolhatóak: A[] bal fa A[ + 1] A[] obb fa A[ + ] A[] apa A[ ( 1)/ ] A kupac mnden gyökértől különböző elemére telesül, hogy az értéke nem lehet nagyobb, mnt az apáé. Ennek következménye, hogy a kupac mnden részfáára telesül, hogy a gyökéreleme maxmáls. Heap Sort Algortmus: HeapSort(A[1,..., n]) 1. Építsünk egy maxmum kupacot az nputból. Ekkor a legnagyobb elem a kupac gyökerében van. Cserélük ezt k a kupac utolsó elemével, és hívuk meg az elárást az eggyel ksebb méretű kupacra. Ha a kupactuladonság sérül az ú gyökér matt, állítsuk helyre.. Ismételük a fent lépéseket, amíg a kupac mérete nem lesz 1 Időgény: O(n log n) Tárgény: O(1) Nem stabl rendezés Helyben rendez Gelle Ktt

. Feladat Rendezzük Heap sort algortmussal az A = [, 1,,,,,, ] tömböt! Megoldás Rendezzük kupacba: Építsük meg a fát. Az A[0] lesz a gyökér. A két fa az A[ 0+1] = A[1] = 1 és A[ 0+] = A[] = és így tovább. Pl a 1 gyereke lesznek az A[ 1+1] = A[] = és A[ + ] = A[] =. Mad állítsuk helyre a kupactuladonságot a legalsó részfáktól kezdve. Paraméterek: hossz(a) = és kupacmeret(a) =. Kupactuladonság helyreállítása: Hasonlítsuk össze a gyökér és a két gyereke értékét Ha a gyökér értéke a legnagyobb, nncs tovább dolgunk Ha közülük a legnagyobb a obb gyerek értéke, akkor cserélük meg a gyökér és a obb gyerek értékét, mad rekurzívan állítsuk helyre a obb részfát Ha a bal gyerek értéke a legnagyobb, cserélük vele, mad rekurzívan állítsuk helyre a bal részfát 1 1 1 1 1 1 A kapott kupacban mnden részfa telesítette a kupactuladonságot (hogy a részfáában a gyökér a legnagyobb értékű csúcs). Egyedül a gyökérben lévő elem sértette meg. Ezután a kupac gyökerét cserélük k a kupac utolsó elemével. Így a legnagyobb elem a helyére kerül a tömbben. Törölük a kupac utolsó elemét. Csökkentsük a kupac méretét eggyel, és állítsuk helyre a kupactuladonságot az ú kupacunkban. kupacmeret(a) = 7. 1 1 1 1 Gelle Ktt

Rakuk a tömbben a helyére a -at, törölük a kupacból. kupacmeret(a) =. Állítsuk helyre a kupactuladonságot. 1 1 1 1 1 1 1 1 1 1 1 1 7 Gelle Ktt

. Feladat Döntsd el, melyk rendezőalgortmust használnád, ha az alábbakat tudod: 1. Egy tömb 1000000 elemű és 0 100 között elemeket tartalmaz.. Egy tömb 1000000 elemű és 0 1000 között elemeket tartalmaz és helyben szeretnénk rendezn.. Egy láncolt lsta 100000 elemet tartalmaz. Az elemek ntervallumáról nem tudunk semmt.. Egy tömb 1000 elemet tartalmaz és az elemek ntervalluma [ 00000, 00000]. Egy tömb 10000 elemet tartalmaz, az elemek ntervallumáról nncs nformácónk, vszont fontos, hogy a megegyező elemek az eredet sorrendükhöz képest ne változzanak a rendezett lstában. Egy láncolt lsta 1000 elemet tartalmaz. A tárolt adatok ntervalluma [ 10, 10]. A választ ndokold! Megoldás 1. Mvel a tömb méretéhez képest a benne tárolt elemek ntervalluma kcs, Countng sort-ot érdemes használn. Az előbb szntén gaz, de a Countng sort külső rendezés. Tömbökön ól működk például egy Quck sort.. Mvel a tárolt elemekről semmt nem tudunk, láncolt lstára a legobb választás a Merge sort.. A tömb méretének négyzete a benne tárolt elemek ntervalluma. Ebben az esetben nem ér meg Countng sort-ot használn. Vszont mvel tömbben dolgozunk ól működk a Quck sort vagy a Heap sort.. Meg kell tartanunk az egyforma elemek egymáshoz vszonyított eredet sorrendét, így csak stabl rendezések öhetnek szóba. Mvel az elemek ntervallumáról nncs nformácónk, a Merge sortot érdemes alkalmazn.. A tárolt elemek ntervalluma a lsta méretéhez képest kcs. A Countng sort láncolt lstával s O(n) dőgényű, tehát szntén használhatuk. Érdekesség: ha tudn akarod, hogyan lehet könnyen kszámoln bzonyos rekurzív algortmusok (mnt pl a MergeSort vagy a FastFourer algortmus) futásdeét és m s az a Mester tétel, kattnts a nyuszra: Gelle Ktt