További rendező és kereső algoritmusok

Slides:



Advertisements
Hasonló előadás
1 Dekomponálás, detritivoria Def.: azon szervezetek tevékenysége, amelyek elhalt szerves anyag feldarabolását, bontását és a mineralizáció útjára irányítását.
Advertisements

TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
Nyitó szakértői találkozó. "C" komponens-informatika Készítette: Farkas László január.28.
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
„Internetes kommunikáció” pótkurzus Készítette: Tóth Tímea Szak: Tantárgykódja: Tanár neve:
Oktatói elvárások, oktatói vélemények a hallgatókról Cserné dr. Adermann Gizella egyetemi docens DUE.
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
MINTAKÉRDÉSEK. A pénzügyi számvitel információs rendszere elsősorban a gazdálkodó szervezetek vezetőinek információs igényeit elégíti ki. A beszámoló.
1 Számvitel alapjai Gazdálkodás:a társadalmi újratermelési folyamat szakaszainak (termelés, forgalom, elosztás, fogyasztás) megszervezésére, az ahhoz rendelkezésre.
A szakiskolák aktuális problémái
Fájlkezelés.
Muraközy Balázs: Mely vállalatok válnak gazellává?
2. előadás Viszonyszámok
Adatbázis normalizálás
Vezetékes átviteli közegek
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
A FELÜGYELŐBIZOTTSÁG BESZÁMOLÓJA A VSZT
Microsoft Excel BAHAMAS tanfolyam
376/2014 EU RENDELET BEVEZETÉSÉNEK
Háttértárak karbantartása
Algoritmusok és Adatszerkezetek I.
Az állatok és az ember egyedfejlődése
Tömörítés.
Becsléselmélet - Konzultáció
Struktúra predikció ápr. 6.
13. Gyakorlat Dr. Pauler Gábor, Egyetemi Docens
Lexikális elemző: lex (flex)
Rangsorolás tanulása ápr. 13..
Munka és Energia Műszaki fizika alapjai Dr. Giczi Ferenc
Számításelmélet 1.
Gazdaságstatisztika Korreláció- és regressziószámítás II.
Nyelvek típusossága.
Pontrendszerek mechanikája
INFOÉRA 2006 Véletlenszámok
2. Bevezetés A programozásba
Szerkezetek Dinamikája
Közigazgatási alapvizsga a Probono rendszerben
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Alapvető tudnivalók Írásjelek mindig előtte lévő szóhoz tapadjanak
Algoritmusok és Adatszerkezetek I.
CONTROLLING ÉS TELJESÍTMÉNYMENEDZSMENT DEBRECENI EGYETEM
C++ Standard Template Library
Vonalkódok Kajdocsi László Informatika tanszék A602 iroda
AVL fák.
Compliance és Corporate Governance
Aritmetikai kifejezések lengyelformára hozása
Informatikai gyakorlatok 11. évfolyam
iOT eszközök által rögzített adatok feldolgozása, megjelenítése
Minimális feszítőfák Definíció: Egy irányítatlan gráf feszítőfája a gráfnak az a részgráfja, amely fagráf és tartalmazza a gráf összes cúcspontját. Definíció:
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Dr. Varga Beatrix egyetemi docens
Matematika 11.évf. 1-2.alkalom
Műveletek, függvények és tulajdonságaik Mátrix struktúrák:
Családi vállalkozások
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
Az állóképesség fejlesztésének módszertana
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Bináris fájlok kezelése
Áramlástan mérés beszámoló előadás
Edényrendezés - RADIX „vissza” - bináris számokra
Vektorok © Vidra Gábor,
A geometriai transzformációk
Algoritmusok.
Hagyományos megjelenítés
Pipeline példák (Normál, 2019).
A statisztikus elemző specializió
REGIONÁLIS KÉPZÉS REGIONÁLIS KÉPZÉS.
Előadás másolata:

További rendező és kereső algoritmusok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./0. További rendező és kereső algoritmusok Rendezés beszúrással Rendezés buborék algoritmussal Rendezés Shell algoritmussal Rendezés quick (gyors) algoritmussal Szekvenciális keresés Bináris keresés Összefésülés

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr. Dudás László 19b Rendezés beszúrással Rendezés: célunk egy adott számsorozat növekvő sorrendbe rendezése. Példa: Adott a rendezendő sorozat: [ 7,8,4,9,1 ] Rendezés után ezt várjuk: [ 1,4,7,8,9 ]. Az algoritmus a kártyások módszerére emlékeztet: a felvett lapot beszúrják a már kézben lévő rendezett lapok közé a megfelelő helyre.

A beszúrásos rendezés függénye (Az m elemű vekt vektor rendezése) Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./2. A beszúrásos rendezés függénye (Az m elemű vekt vektor rendezése) void Beszur(int* vekt, int m) { int i, j, buf ; for (i =1; i < m; i++) { buf = vekt [ i ]; j = i -1; while ( j >= 0 && buf < vekt[ j ] ) { vekt[ j+1] = vekt[ j ]; j--; } vekt[ j + 1] = buf; /* beszúrás */

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr. Dudás László 19b Rendezés buborék algoritmussal Az oszlop alakú rendezetlen vektorban a rendezés során a kisebb elemek buborék módjára emelkednek a nagyobb értékűek fölé.

A buborék rendezés függvénye (Az m elemű vekt vektor rendezése) Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./4. A buborék rendezés függvénye (Az m elemű vekt vektor rendezése) void Buborek(int* vekt, int m) { int i, j, buf ; for (i =1; i < m; i++) for (j = m-1; j >= i ; j--) if (vekt[ j-1 ] > vekt[ j ] ) { buf = vekt[ j -1] ; vekt[ j-1] = vekt[ j ]; vekt[ j ] = buf ; }

Rendezés Shell algoritmussal Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./5. Rendezés Shell algoritmussal A Donald L. Shell nevéhez fűződő algoritmus az előzőekkel ellentétben, amelyek kb. 200 elemig hatékonyak, nagy elemszámú vektorok rendezésére előnyös. Alapgondolata, hogy ne a közvetlenül szomszédos elemek összehasonlításával végezzük a rendezést. Nagyméretű vektoroknál arányaiban kevesebb adatmozgatást kíván és ezért gyorsabb. Rendezés quick (gyors) algoritmussal Ez a speciális cserealgoritmus C. A. R. Hoare találmánya. Nevéhez méltóan gyors, különösen nagyméretű vektoroknál. Lefutása függ az ún. pivot elem szerencsés megválasztásától is. Megjegyzések: A rendezés elvégezhető szövegkonstansokat tartalmazó karaktervektorokon is. Ekkor a karakterek ASCII kódját vesszük alapul az összehasonlításnál. A memóriában történő rendezést belső, a fájlelemeken fájlban végzett rendezést külső rendezésnek is nevezik.

Szekvenciális keresés Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./6. Kereső algoritmusok Feladat: egy vektor megadott értékkel egyező elemének megtalálása, vagy annak megállapítása, hogy ilyen elem nincs. Sikeres keresés megadja az elem indexét. Szekvenciális keresés Rendezetlen sorozaton is elvégezhető. Az elemeket sorra összehasonlítjuk a keresett értékkel. Egyezés esetén megadjuk az elem indexét. Lassú, a sebessége függ az elemnek a sorozatban elfoglalt helyétől. (V.ö. Kiválasztással) Bináris keresés Csak rendezett sorozaton alkalmazható. Nagyon gyors. Alapgondolata, hogy minden lépésben elhagyja a maradéksorozat azon felét, mely a keresett értéket biztosan nem tartalmazza. Minden lépésben az ((alsóindex+felsőindex) / 2) indexű elemmel hasonlítja össze a keresett értéket. Ha az elem kisebb, akkor az elemmel végződő alsó, ha nagyobb, akkor az elemmel kezdődő felső félsorozatot hagyja el. Egyenlőség esetén megtalálta a keresett elemet. Átlagos esetben log2(maxindex) lépés elegendő.

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr. Dudás László 19b Példa A sorozat: 1 3 7 9 12 19 27 Keresett érték = 12 1. lépés: i = (0+6)/2; (=3) 9<12 A maradéksorozat: 12 19 27 2. lépés: i = (4+6)/2; (=5) 19<12 A maradéksorozat: 12 3. lépés: i = (4+4)/2; (=4) 12==12 megtalálta.

A bináris keresés függvénye (Az m elemű vekt vektor rendezése) Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./8. A bináris keresés függvénye (Az m elemű vekt vektor rendezése) void Bin_keres(int* vekt, int m, int keresett ) { int a, f, k, talalt ; a = 0; f = m-1; talalt = 0; while (a <= f && !talalt ) k = ( a + f ) / 2 ; if (keresett < vekt[ k ] ) f = k-1; else if (keresett > vekt[ k ] ) a = k+1; else talalt = 1; } if (talalt) return k; else return -1; }

Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr. Dudás László 19b Összefésülés (merge) Célja két, azonos típusú értékekből álló rendezett sorozat egyesítése a rendezettség megtartásával. A sorozat fájl is lehet. Példa: S1: 2,4,5,5,7 S2: 1,3,4,6,9 S1_2: 1,2,3,4,4,5,5,6,7,9

Az összefésülés függvénye Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA Dr.Dudás László 19b./10. Az összefésülés függvénye void Merge(int* S1, int* S2, int* S1_2, int m1, int m2 ) { int i1=0, i2=0, k=0 ; while (k < m1 + m2 ) if (i1 < m1 && i2 < m2) if (S1[ i1 ] <= S2[ i2 ] ) { S1_2[ k ] = S1[ i1 ]; i1++; } else { S1_2[ k ] = S2[ i2 ]; i2++; } k++; } else for (k = k; k < m1+m2; k++) if (i1 == m1 ) { S1_2[ k ] = S2[ i2 ]; i2++; } else { S1_2[ k ] = S1[ i1 ]; i1++; } }