KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN Szortírozás KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
Tartalom: Beszúrás Összefészülés Sorbarendezés Átrendezés cserével Legnagyobb és a következő elem
Beszúrás Adott egy lista n-1 dologról ( ezek lehetnek számok , nevek bármi ) Ezután az n-ik elemet pedig beakarjuk rakni a listába. Cél: listában szereplő dolgokkal összehasonlítva, a lista megfelelő helyére kell beszúrnunk. Hogyan lehetséges ez?
Példa:
Beszúrás Hátránya: Lineális kereséssel történik Átlagosan n/2 összehasonlítást igényel Legrosszabb eset: n-1 összehasonlítás. -------- > nem túl gazdaságos
Bináris rendezés Feltételezzük: n= 2k tehát a listánk megegyezik 2 valamely hatványával. Ötlet: Hasonlítsuk össze a kiválasztott elemet , a lista középső elemével. 2k-1 -1 elemmel kell összehsonlítani Következő: 2k-2-1 és így tovább. Tehát a k lépésszámot kifejezve: k = log2 n
Bináris Keresés példa: Kezdő sorozat: { 4 , 2 , 6 , 9 , 12 , 15 , 2 } Beszúrandó elem: 1 Egyszerűség kedvéért Feltételezzük: n = 2k 1. összehasonlítás: 1 < 9 ------- > n = 23-1-1 = 3 ( enyni elem közé kell beszúrni az újat ) 2. összehasonlítás: 1 < 2 ----- n = 23-2-1 = 1 elemmel kell összehasonlítani 3. összehasonlítás: 1 < 4 -------> Megvan az elem helye
Bináris Keresés K lépésszám n – el kifejezve. K = log2 n Előző példában : n = 8al K = 3
Összehasonlítás Nem mindig gazdaságosabb mint az előző lineális keresés és beszúrás. 1000 elem esetén ( legroszabb eset) : Beszúrás: 1000 művelet Bináris keresés: 10 művelet. Informatikában: Gazdaságtalan, nem használjuk.
Feladat Itt kétserpenyős mérleg segítségével kell kiválasztani a külsőre teljesen egyforma pénzdarabok közül a könnyebb hamisat, 27 darab pénzérme van. Megoldás:
Feladat – Bináris rendezés Ha n = 3k alakú pénzdarabok száma, akkor átlagosan k mérlegelésre van szükség, de átlagosan ennél kevesebb mérlegelés nem lehetséges. N = 27 pénz db 27 = 3k ----- > k = log3 27 = 3
Amerikai Hadsereg - Feladat 2.1. Példa. Az amerikai hadseregnél állítólag úgy végzik a vérbajosok felkutatását, hogy az egész társaságtól vért vesznek, és a páciensek felének véréből egy részt összeöntve elvégzik a Wassermann-próbát. Amelyik félnél ez pozitív, ott a felezgetést tovább folytatják egész addig, amíg a betegeket ki nem szűrték. Ebben a seregben 1 beteg van. Hány összehasonlítás kell hogy kiszűrjük biztosan a beteget ? N = 1000 N = 2k ~ k = log2 1000
Összefésülés 2 db rendezett n hosszúságú lista Szeretnénk összefésülni a 2 listát Kevés összehasonlítással X1…. Xn Y1…. Yn
Összefésülés 1. megoldás: Hátránya: x elemek sokszoros mozgatása
Javított megoldás: 3. tár bevezetése, elemek egyszeri mozgatása.
Sorbarendezés Gyakori feladat hogy n adott dolgot valamilyen szempont szerint sorba kell rendezni. Lehet: érték, súly, növekvő, csökkenő, Feltételezés: bármely 2 dolgot összehasonlítva, megtudjuk mondani melyik előzze meg a másikat.
Szomszédos elemek cseréje - buborék Adott egy 5 elemű tömb: Hány cserével tudnánk az elemeit növekvő sorrendbe rendezni?
Szomszédos elemek cseréje
Átrendezés Cserékkel Adott egy K1, K2,….,kn sorozat. Melyeket növekvő sorrendbe kell átrendezni. 1. fázis k1 szám a helyére kerül. 1. csere k1 < kn , k1 < kn-1, k1> kn-2 és az új sorozatban függőleges vonallal vágjuk le amikkel már nem kell összehasonlítani. Kn-2 | K2K3…..Kn-3,K1|Kn-1,Kn
Példa 503,87, 512,61,908,170,897,275 1. fázis: 503 helyére kerül. 1. csere után :275 |, 87 , 512 , 61 , 908 , 170 ,897, 503 2. csere 275,87 | 503,61,908,170,897 | 512 3. csere 275, 87, 170 | 61,908,502 |897,512 4. csere után:275,87,170,61,|502|,908, 897, 512
Példa: 2. fázis: 275 helyretétele 275,87, 170,61,503,908,897,512 275,87, 170,61,503,908,897,512 1. csere után: 61 | 87,170,275 | …..
Feladat – Átrendezés cserékkel Szomszédos elemek cseréjével: 8 lépésből. Átrendezés cserékkel:
Legnagyobb és következő elem N dolog adott, melynek a sorrendjét nem ismerjük. Hány összehasonlítás kell hogy a legnagyobbat megtaláljuk? Tegyük fel n db ping pong versenyzőről van szó Lehető legkevesebb mérkőzést szeretnénk játszatni velük, hogy kiderüljön melyik a legjobb. (Erősorrend adott, és a jobb képességű nyer) 2 lehetőség:
Legnagyobb és a következő elem Kihívásos verseny: Valaki kikiáltja magát bajnoknak, a bajnokot bárki kihívhatja. A Vesztes kiesik a versenyből, a győztest újra ki lehet hívni. Ha elfogytak a kihívók akkor megvan a bajnok. Kieséses bajnokság a közismert módon.
2. Legnagyobb elem Így a szükséges mérkőzések száma : (n-1) + (m-1) De mennyi az m? Legfeljebb annyi ahány forduló volt, és a versenyben feleződnek: Minimum mérkőzés szám a 2. helyezethez: n+ (log2 n ) -2