Rendező algoritmusok. Tartalomjegyzék. Készítette: Gál Tamás

Hasonló dokumentumok
Egyszerű algoritmusok

Másolásra épülő algoritmusok

Vezérlési szerkezetek

Vezérlési szerkezetek

Algoritmuselmélet 2. előadás




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

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

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

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

PROGRAMOZÁSI TÉTELEK

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

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.

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

Eljárások, függvények



Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések


Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Algoritmusok vektorokkal keresések 1


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

Véletlenszám generátorok. 5. előadás

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

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Leica DISTOTMD510. X310 The original laser distance meter. The original laser distance meter

Adatszerkezetek 1. előadás

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

ML/GL (164)

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Tartalom. Programozási alapismeretek. 11. előadás

/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

Egyirányban láncolt lista

A félév során előkerülő témakörök

MŰSZAKI TUDOMÁNYI DOKTORI ISKOLA. Napkollektorok üzemi jellemzőinek modellezése

Adatbázis rendszerek Gy: Algoritmusok C-ben

Előző óra összefoglalása. Programozás alapjai C nyelv 3. gyakorlat. Karakter típus (char) Karakter konstansok. Karaktersorozatot lezáró nulla

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

The original laser distance meter. The original laser distance meter


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

Programozási tételek. Elemi programozási tételek. (Sorozathoz érték rendelése)

C++ programozási nyelv


Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

vállalatok esetén Technológia és költségek, Árdiszkrimináció és monopólium: A vállalati árbevétel megoszlása Számviteli költségek + számviteli profit

Üzemeltető ( )

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

Fogaskerékpár számítása

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek


Programozási alapismeretek 11. előadás

Megjegyzések a mesterséges holdak háromfrekvenciás Doppler-mérésének hibaelemzéséhez


A mágneses tér energiája, állandó mágnesek, erőhatások, veszteségek

Smalltalk 2. Készítette: Szabó Éva

Gyakorló feladatok ZH-ra

Párhuzamos algoritmusok

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

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

A poliolefinek bemutatása

Készítette: Nagy Tibor István

1. megold s: A keresett háromjegyű szám egyik számjegye a 3-as, a két ismeretlen számjegyet jelölje a és b. A feltétel szerint

A kettős könyvvitelt vezető egyéb szervezet egyszerűsített beszámolója és közhasznúsági melléklete

Orosz Gyula: Markov-láncok. 4. Statisztikus golyójátékok

Felvételi tematika INFORMATIKA

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Programozási segédlet

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Merkur. Festőberendezések speciális technológiával és kiváló teljesítménnyel

vállalatok esetén Technológia és költségek, Árdiszkrimináció és monopólium: A vállalati árbevétel megoszlása Számviteli költségek + számviteli profit

Az indukció. Azáltal, hogy ezt az összefüggést felírtuk, ezúttal nem bizonyítottuk, ez csak sejtés!

HALMAZOK TULAJDONSÁGAI,

Melyik rendezés? Kódolvasási készségek fejlesztése

I. Egydimenziós tömb elemeinek rendezése


Algoritmusok és adatszerkezetek gyakorlat 07

Mátrixok 2017 Mátrixok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Tartóprofilok Raktári program


Fénysugarak visszaverődésének tanulmányozása demonstrációs optikai készlet segítségével

Néhány szó a műről. Tisztítás technológia: Vas, mangán, arzén, ammónium

Informatikai tehetséggondozás:

Környezetvédelmi analitika

A C programozási nyelv III. Pointerek és tömbök.

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Átírás:

Rendező algortmusok Tartalomjegyzék Csere...2 Tömbelemek cseréje...2 Tömbelemek cseréje a a[]>a[+1]...3 n-1 csere, a a[]>a[+1]...4 (n-1)*(n-1) csere, a a[]>a[+1]...5 Buborék rendezés...6 Cserés rendezés...7 Mnmum kválasztásos rendezés...8 Beszúrásos rendezés...9 Készítette: Gál Tamás Creatve Commons -Nevezd meg!-ne add el!-így add tovább! 2.5 Magyarország lcenc alatt asználató GT Rendező algortmusok 1

Csere tmp = a a = b b = tmp C# és Java kód nt a = 5; nt b = 6; nt tmp; tmp = a; a = b; b = tmp; tmp = a a = b b = tmp Console.WrteLne("a: "+a); Console.WrteLne("b: "+b); - Console.WrteLne elyett System.out.prntln Tömbelemek cseréje tmp = a[] a[] = a[+1] a[+1] = tmp nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt tmp, = 0; for (nt j=0;j<n;j++) {Console.Wrte(a[j]+", "); tmp = a[]; a[] = a[+1]; a[+1] = tmp; Console.WrteLne(); for (nt j=0;j<n;j++) {Console.Wrte(a[j]+", "); tmp = a[] a[] = a[+1] a[+1] = tmp - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln GT Rendező algortmusok 2

Tömbelemek cseréje a a[]>a[+1] Csak akkor cserélünk, a a nagyobb ndexű elem értéke ksebb. a a[]>a[+1] akkor tmp = a[] a[] = a[+1] a[+1] = tmp a vége nt[] a = {22, 5, 2, 4; nt n = a.lengt; //a tömb mérete nt tmp, = 0; for (nt j=0;j<n;j++) {Console.Wrte(a[j]+", "); tmp = a[] a[] = a [+1] a[+1] = a[] a[] > a[+1] f(a[]>a[+1]) { tmp = a[]; a[] = a[+1]; a[+1] = tmp; Console.WrteLne(); for (nt j=0;j<n;j++) {Console.Wrte(a[j]+", "); - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Utána: 5, 22, 4, 2, GT Rendező algortmusok 3

n-1 csere, a a[]>a[+1] A tömböt egyszer véggjárjuk az egymás mellett tömbelemeket kcseréljük, a a nagyobb ndexű elem értéke ksebb. cklus j=0 -tól n-2 -g a a[j]>a[j+1] akkor tmp = a[j] a[j] = a[j+1] a[j+1] = tmp a vége cklus vége nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt tmp; for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); csere(a[j],a[j+1]) j = 0 j < n-1 a[j] > a[j+1] for (nt j=0;j<n-1;j++) { f(a[j]>a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; Console.WrteLne(); for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln 1. csere: 22, 5, 4, 2, 2. csere: 5, 22, 4, 2, 3. csere: 5, 4, 22, 2, Utána: 5, 4, 2, 22, GT Rendező algortmusok 4

(n-1)*(n-1) csere, a a[]>a[+1] A tömböt n-1 -szer véggjárjuk az egymás mellett tömbelemeket kcseréljük, a a nagyobb ndexű elem értéke ksebb. A végeredmény rendezett tömb lesz, de gen sok felesleges műveletet végzünk. = 0 Cklus := 0 tól n-2 -g Cklus j := 0-től n-2 -g Ha a[j] > a[j+1] akkor Csere( a[j], a[j+1] ) Clus vége Cklus vége nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt tmp; for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); for (nt =0;<n-1;++) { for (nt j=0;j<n-1;j++) { f(a[j]>a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; Console.WrteLne(); for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln = + 1 csere(a[j],a[j+1]) < n-1 j = 0 j < n-1 a[j] > a[j+1] 1. külső cklus végén: 5, 4, 2, 22, 2. külső cklus végén: 4, 2, 5, 22, 3. külső cklus végén: 2, 4, 5, 22, Utána: 2, 4, 5, 22 GT Rendező algortmusok 5

Buborék rendezés Az egymás után elemeket összeasonlítjuk. Ha a nagyobb értékű elem alacsonyabb ndexű elyen van, akkor kcseréljük őket. A tömbön először véggaladva a legnagyobb elem a legnagyobb sorszámú elyen lesz. A külső cklus cklusváltozója n-1-től csökken 1-g. A belső cklus csak 0-tól -1 -g tart. Cklus := n-1 től 1 -g Cklus j := 0-től -1 -g Ha a[j] > a[j+1] akkor Csere( a[j], a[j+1] ) Clus vége Cklus vége nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt tmp; for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); for (nt =n-1;>0;--) { for (nt j=0;j<;j++) { f(a[j]>a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; Console.WrteLne(); for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); = n - 1 > 0 j = 0 j < - 1 = - 1 a[j] > a[j+1] csere(a[j],a[j+1]) - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln 1. külső cklus végén: 5, 4, 2, 22, 2. külső cklus végén: 4, 2, 5, 22, 3. külső cklus végén: 2, 4, 5, 22, Utána: 2, 4, 5, 22 GT Rendező algortmusok 6

Cserés rendezés A tömb 1..N eleme közül kválasztjuk a legksebbet, majd azt a legelső elem elyére tesszük. A tömb 2..N eleme közül kválasztjuk a legksebbet, majd azt a másodk elem elyére tesszük. Cklus := 0 tól n-2 -g Cklus j := +1-től n-1 -g Ha a[] > a[j] akkor Csere( a[], a[j] ) Clus vége Cklus vége nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt tmp; for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); for (nt =0;<n-1;++) { for (nt j=+1;j<n;j++) { f(a[]>a[j]) { tmp = a[j]; a[j] = a[]; a[] = tmp; Console.WrteLne(); for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); = + 1 csere(a[],a[j]) = 0 < n-1 j = +1 j < n a[] > a[j] - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln 1. külső cklus végén: 2, 22, 5, 4, 2. külső cklus végén: 2, 4, 22, 5, 3. külső cklus végén: 2, 4, 5, 22, Utána: 2, 4, 5, 22 GT Rendező algortmusok 7

Mnmum kválasztásos rendezés Működése asonló a cserés rendezésez, a csere csak a belső cklus után valósul meg. A belső cklus csak értékadást tartalmaz, amnek futás deje lényegesen rövdebb. Cklus := 0 tól n-2 -g mn = ; Cklus j := +1-től n-1 -g Ha a[] > a[j] akkor mn = j Clus vége Csere( a[], a[mn] ) Cklus vége nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt tmp, mn; for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); for (nt =0;<n-1;++) { mn = ; for (nt j=+1;j<n;j++) { f(a[]>a[j]) { mn = j; tmp = a[mn]; a[mn] = a[]; a[] = tmp; = + 1 csere(a[],a[j]) = 0 < n-1 j = +1 j < n a[] > a[j] Console.WrteLne(); for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln 1. külső cklus végén: 2, 5, 4, 22, 2. külső cklus végén: 2, 4, 5, 22,, 3. külső cklus végén: 2, 4, 5, 22, Utána: 2, 4, 5, 22 GT Rendező algortmusok 8

Beszúrásos rendezés Sorra egymás után kemeljük a tömb elemet. Ha a kemelt elem előtt nála nagyobb elemeket találunk, akkor azokat eggyel átrább másoljuk. Cklus = 1 től n-1 -g kulcs = a[] j = -1 Cklus amíg j >= 0 és a[j]>kulcs a[j+1] = a[j] j = j 1 Clus vége a[j+1] = kulcs Cklus vége = 1 < n kulcs = a[] nt[] a = {22, 5, 4, 2; nt n = a.lengt; //a tömb mérete nt j, kulcs; for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); j = - 1 j>=0 és a[j]>kulcs for (nt =1;<n;++) { kulcs = a[]; j = -1; wle(j >= 0 && a[j]>kulcs) { a[j+1] = a[j]; j = j - 1; a[j+1] = kulcs; Console.WrteLne(); for (nt k=0;k<n;k++) {Console.Wrte(a[k]+", "); a[j+1] = a[j] j = j - 1 a[j+1] = kulcs = + 1 - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Kulcs=5 > 5, 22, 4, 2, Kulcs=4 > 4, 5, 22, 2, Kulcs=2 > 2, 4, 5, 22, Utána: 2, 4, 5, 22, GT Rendező algortmusok 9