Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
Számítástechnika Levelezőknek
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1.
Szélességi bejárás Párhuzamosítása.
Algoritmusok Az algoritmus fogalma:
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Készítette: Szitár Anikó
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Előrendezéses edényrendezés – RADIX „vissza”
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Rendezési algoritmusok
Listák, Vermek és Várakozási Sorok. Vermek Def: Egy sajátos lista amelyben minden beszúrási illetve törlési művelet csak a lista egyik végén történik.
Listák, Vermek és Várakozási Sorok
Listák, Vermek és Várakozási Sorok. Listák Pl: Kirándulók listája Bevásárló lista Alma Kenyér Krumpli Szappan Mosópor Bevásárló lista.
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Összetett adattípusok
Brute Force algoritmus
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Fák.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Egyszerű cserés rendezés
Edényrendezés. Működés, elvek - Az edényrendezés nem összehasonlító rendezés. - A rendezendő elemeket nem hasonlítjuk össze, hanem a rendezés során az.
Pole (array of...).  Zložený datový typ na ukladanie viacerých premených  Zápis: var meno_pola : array [ konce intervala ] of základný typ ; Základné.
Algoritmus és adatszerkezet Tavaszi félév Tóth Norbert1 Floyd-Warshall-algoritmus Legrövidebb utak keresése.
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Gráfok ábrázolása teljesen láncoltan
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Bináris kereső fák Itterátorok.
Objektum orientált programozás
Horváth Bettina VZSRA6 Feladat: Szemléltesse az edényrendezést.
Bucket sort avagy lineáris idejű rendezés. Pszeudo kód n hosszú L listára for i = 1..n If B[L[i]] != üres Akkor [L[i] Beszúrásos rendezéssel B[L[i]]-be.
Rendezőalgoritmusok. Feladatok I. 1.Hozzunk létre új StandardEXE VB projektet. Töröljük Form1-t 2.Add/Module/New, majd Properties/átnevezzük: „MainModule”
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
A 2. géptermi beszámoló VBA anyagának összefoglalása
Programozási alapismeretek 11. előadás
Bernát Péter Minimumkiválasztásos rendezés.
Excel programozás (makró)
(Bináris) Kupac (heap) adattípus
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Excel programozás (makró)
Tömbök és programozási tételek
Logikai programozás 6..
Mediánok és rendezett minták
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Algoritmusok és Adatszerkezetek I.
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Informatikai gyakorlatok 11. évfolyam
Depth First Search Backtracking
Algoritmusok és Adatszerkezetek I.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön, és betesszük a beszúrandó elemet az elé az elem elé, ami már nem előzi meg. Általában n/2, de a legrosszabb esetben n összehasonlításra van szükség. Másik lehetőség, hogy a kérdéses elemet a középső elemmel hasonlítjuk össze. Ha pl. az új elem megelőzi a középsőt, akkor a tömb első felében keressük a helyét a továbbiakban. Stb. A lépésszám log 2 n, vagy az erre következő első egész szám, azaz [log 2 n], ha n nem 2 hatványa.

Beszúrásos rendezés A rendezés során sorrendbeli hibát keresünk. A kialakult sorrendtől eltérő helyet megjegyezzük, az ott lévő elemet elmentjük, majd addig keresünk attól visszafelé, amíg nála nagyobbat nem találunk, az elé kell majd beszúrnunk. Amikor a helyet megtaláltuk, akkor a közbeeső elemeket feljebb tolva, az imént kiemelt elemet a felszabaduló helyre illesztjük.

sort(r, lo, up) arraytosort r; int lo, up; {int i, j; arrayentry tmpr; for (i=up-1; i>=lo; i--) { tmpr= r[i]; for (j=i+1; j r[j].k; j++) r[j-1]=r[j]; r[j-1]=tmpr; } };};

Összefésülés Van két n hosszúságú listánk: (a 1,..., a n ) és (b 1,...,b n ). Ezeket kell egyesíteni. Hasonlítsuk össze az b 1 elemet rendre az a 1, a 2,... elemekkel. Beszúrjuk b 1 -et az elé az a i elé, amelyet közvetlenül megelőz. Ettől az a i -től folytatjuk tovább b 2 -re. Stb. Legfeljebb 2n-1 összehasonlításra van szükség.

function merge(a, b: list):list; var first, last, tmp:list; begin first:=nil; while b<>nil do if a=nil then begin a:=b; b:=nil end else begin if b .k > a .k then begin tmp:=a; a:=a .next end else begin tmp:=b; b:=b .next end; temp .next:=nil; tailins(tmp, first, last) end; tailins(a, first, last); merge:=first end;

Minimum elven alapuló rendezés Egy adott intervallumban (kezdetben a teljes lista) megkeressük a legkisebb elemet és ezt tesszük az első helyre. A következő lépésben a második elemtől kezdve vizsgáljuk és ismét a legkisebb elemet visszük előre. Stb. A mindenkori legkisebb elem keresése lineáris kereséssel történik.

Buborékrendezés A lista elejéről indulva rendre összehasonlítjuk a szomszédos elemeket, s ha a kisebb van hátrább, megcseréljük őket. Az eljárást mindaddig folytatjuk, amíg a rendezettség ki nem alakul. Módosított buborékrendezés Az alapelv hasonló, de a pásztázás többirányú és váltakozó.

procedure sort(var r:arraytosort; lo, up:integer); var i,j:integer; tmpr:arraytype; begin while up>lo do begin j:=lo; for i:=lo to up-1 do if r[i].k>r[i+1].k then begin tmpr:=r[i]; r[i]:=r[i+1]; r[i+1]:=tmpr; j:=i end; up:=j end end;

sort(r, lo, up) arraytosort r; int lo, up; {int i, j; while (up>lo) { j=lo; for (i=lo; i<up; i++) if r[i].k>r[i+1].k) { exchange(r, i, i+1); j=i;} up=j; for (i=up; i>lo; i--) if r[i].k<r[i-1].k) { exchange(r, i, i-1); j=i;} lo=j; } };

Shell rendezés A beszúrásos módszer lépésenként finomított változata. A listának csak minden d-edik elemét vizsgáljuk, azaz d lépésközzel végezzük el a beszúrásos rendezést. Ezután csökkentjük a lépésközt, és úgy végezzük el a rendezést. A folyamat addig tart, amíg a lépésköz 1 nem lesz.

sort(r, lo, up) arraytosort r; int lo, up; {int d, i, j; arrayentry tmpr; for (d=up-lo+1; d>1; ) { if (d<5) d=1; else d=(5*d-1)/11; for (i=up-d; i>=lo; i--) { tmpr= r[i]; for (j=i+d; j r[j].k; j+=d) r[j-d]=r[j]; r[j-d]=tmpr; } } };};

Gyorsrendezés (quick-sort) Kiválasztjuk a lista tetszőleges elemét. Ezt nevezzük alapelemnek, mert ehhez viszonyítjuk a többit. Először balról lépegetünk addig, amíg ennél az alapelemnél csupa kisebbet találunk. Ha egy nagyobb vagy egyenlő elemhez érünk, jobbról vizsgálódunk, és keressük az alapelemnél nem nagyobb elemet. Ha megtaláltuk, kicseréljük a kettőt és a következő eggyel nagyobb, illetve kisebb elemtől kezdjük a keresést és a cserét.

procedure sort(var r:arraytosort; lo, up:integer); var i, j:integer; tmpr:arraytype; begin while up>lo do begin i:=lo; j:=up; tmpr:=r[lo]; while i<j do begin while r[j].k>tmpr.k do j:=j-1; r[i]:=r[j]; while (i<j) and (r[i].k<=tmpr.k) do i:=i+1; r[j]:=r[i]; end; r[i]:=tmpr; sort(r, lo, i-1); lo:=i+1 end end;

Lineáris keresés A legalapvetőbb keresési algoritmus. Adott elemet keresünk egy listában úgy, hogy minden elemet végignézünk. function search(n:integer;key:keyt;var r dataarray):integer; var i:integer; begin i:=1; while (i r[i].k) do i:=i+1; if r[i].k=key then search:=i else search:=-1; end;

Bináris keresés Rendezett listában keresünk. A keresett elemet a táblázat középső eleméhez hasonlítjuk. Ha egyezik, akkor megtaláltuk, ha nem, akkor a listának abban a felében folytatjuk a keresést, amelyet a keresett érték kijelöl: ha a keresett érték kisebb, mint a középső elem, akkor a lista első felében, egyébként a másodikban. Az eljárást ilyen módon folytatjuk tovább.

function search(n:integer;key:keyt;var r dataarray): integer; var high, j, low: integer; begin low:=0; high:=n; while high-low>1 do begin j:=(high+low) div 2; if key <= r[j].k then high:=j else low:=j end; if r[high].k=key then search:=high else search:=-1; end;