Rendezés lineáris időben (edény rendezések) Arany Zsolt ZDHYXP
• A rendezés nem összehasonlítás alapján történik, hanem egy hasító függvény alapján. Példa: Pénztárgép Egyértelműen meghatározható, hogy melyik címlet melyik „edénybe” kerül.
Hasító: h(k) -K a kulcs -H a hasító fv. Az 50-s érme a 4. edénybe fog kerülni. H(50)=4 <- Hasító függvény A 200-s érme a 6 edénybe fog kerülni. H(200)=6
Születési dátumok jó példa a több mezőt tartalmazó kulcsra [év] [hó] [nap] Igaz a mezőkre, hogy mindegyik osztatlan kulcs. 1.Lépés: Az évek szerint válogatjuk szét őket 2.Lépés: A hónapok szerint válogatjuk szét őket 3.Lépés: A napok szerint válogatjuk őket 4.Lépés: Kivesszük az adatokat az edényekből és sorozattá alakítjuk őket, a sorozat rendezett lesz Hátrány: Az edények száma arányos az adatok számával. (Sok memóriát igényel sok adat esetén)
Listás edényrendezés visszafelé • Input: bcc, cba, aac, bbb, cab, acc, bca • Első lépés: • 3. pozíció szerint válogatjuk szét az adatokat • a: cba, bca • b: bbb,cab • c: bcc, aac, acc • a->b->c sorrendben összefűzzük
• Input: cba, bca, bbb,cab, bcc, aac, acc • Második lépés: • 2. pozíció szerint válogatjuk szét az adatokat • a: cab, aac • b: cba, bbb • c: bca, bcc,acc • a->b->c sorrendben összefűzzük
• Input: cab, aac, cba, bbb, bca, bcc, acc • Harmadik lépés: • 1. pozíció szerint válogatjuk szét az adatokat • a: aac, acc • b: bbb, bca, bcc • c: cab, cba • a->b->c sorrendben összefűzzük • Output: • aac, acc, bbb, bca, bcc, cab, cba
Bináris számok RAD->
Bináris számok RAD <-
Kérdés • Össze hasonlító rendezés vagy edényrendezés? • Öh. Rend: n * log n • Edényrend: d * n • Ha d > logn => az edény rendezés roszabb • Pl: n=1000 • Rekordméret = 500bájt • Kulcs méret = 16 bájt • d= 128 • Öh rend T(n) = ϴ (n * log n ) ~ • Edényrendezés T(n) = ϴ (d * n) ~