Algoritmusok vektorokkal keresések 1

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

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..

Táblázatok fontosabb műveletei 1

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. 1. ábra.

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

14. Mediánok és rendezett minták

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.

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

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

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

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

Algoritmuselmélet 2. előadás

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

Számjegyes vagy radix rendezés

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

Adatbázis rendszerek Gy: Algoritmusok C-ben

1. ábra. Számláló rendezés

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Programozási segédlet

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

Dinamikus programozás vagy Oszd meg, és uralkodj!

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

Számláló rendezés. Példa

Adatszerkezetek 7a. Dr. IványiPéter

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Problémaosztályok, algoritmusok. Rendezés, keresés

Megoldott feladatok. Informatika

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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

Algoritmusok és adatszerkezetek gyakorlat 07

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Érdekes informatika feladatok

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Adatszerkezetek 2. Dr. Iványi Péter

Tartalomjegyzék Algoritmusok - pszeudókód

Programozási módszertan. Mohó algoritmusok

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

10. előadás Speciális többágú fák

Programozás alapjai II. (7. ea) C++

7 7, ,22 13,22 13, ,28

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Egyszerű programozási tételek

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

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

Algoritmizálás + kódolás C++ nyelven és Pascalban

PROGRAMOZÁSI TÉTELEK

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

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

Amortizációs költségelemzés

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)

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

Internet programozása. 3. előadás

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Dr. Schuster György február / 32

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

Egyesíthető prioritási sor

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

értékel függvény: rátermettségi függvény (tness function)

Felvételi tematika INFORMATIKA

Közismereti informatika 2.zh T-M szakirány

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Programozás alapjai. 8. előadás

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

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

ALGORITMUSOK ÉS PROBLÉMAOSZTÁLYOK (1. előadás)

Rendezési algoritmusok belső rendezés külső rendezés

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

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





Algoritmizálás és adatmodellezés tanítása 1. előadás

INFORMATIKAI ALAPISMERETEK

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

Programozás alapjai. 5. előadás

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

Hierarchikus adatszerkezetek

Adatszerkezetek és algoritmusok

Knuth-Morris-Pratt algoritmus

Maximum kiválasztás tömbben

Algoritmusok helyességének bizonyítása. A Floyd-módszer

félstatikus adatszerkezetek: verem, várakozási sor, hasítótábla dinamikus adatszerkezetek: lineáris lista, fa, hálózat

Algoritmusok mobidiák könyvtár

23. Fa adatszerkezetek, piros-fekete fa adatszerkezet (forgatások, új elem felvétele, törlés)(shagreen)

XML adatkezelés. 11. témakör. Az XQuery nyelv alapjai. XQuery. XQuery célja egy imperatív lekérdező nyelv biztosítása. XQuery.

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

Nyugat-magyarországi Egyetem Simonyi Károly Kar. Szabó László. Algoritmusok. Feladatgyűjtemény

Információs Technológia

Rekurzív algoritmusok

Átírás:

Algoritmusok vektorokkal keresések 1 function TELJES_KERES1(A, érték) - - teljes keresés while ciklussal 1. i 1 2. while i méret(a) és A[i] érték do 3. i i + 1 4. end while 5. if i > méret(a) then 6. KIVÉTEL "nincs ilyen értékű elem" 7. else 8. return i 9. end if function TELJES_KERES2(A, érték) - - teljes keresés for ciklussal 1. for i 1 to méret(a) do 2. if A[i] = érték then 3. return i 4. end if 5. end for 6. KIVÉTEL "nincs ilyen értékű elem" function TELJES_KERES_REK(A, érték) - - teljes keresés rekurzívan 1. if méret(a) = 0 then 2. KIVÉTEL "nincs ilyen értékű elem" 3. else if A[1] = érték then 4. return 1 5. else 6. return TELJES_KERES_REK(A[2..méret(A)], érték) + 1 7. end if

Algoritmusok vektorokkal keresések 2 function LINEÁRIS_KERES1(A, érték) - - lineáris keresés while ciklussal 1. i 1 2. while i méret(a) és A[i] < érték do 3. i i + 1 4. end while 5. if i > méret(a) vagy A[i] > érték then 6. KIVÉTEL "nincs ilyen értékű elem" 7. else 8. return i 9. end if function LINEÁRIS_KERES2(A, érték) - - lineáris keresés for ciklussal 1. for i 1 to méret(a) do 2. if A[i] = érték then 3. return i 4. else if A[i] > érték then 5. KIVÉTEL "nincs ilyen értékű elem" 6. end if 7. end for 8. KIVÉTEL "nincs ilyen értékű elem" function LINEÁRIS_KERES_REK(A, érték) - - lineáris keresés rekurzívan 1. if méret(a) = 0 vagy A[1] > érték then 2. KIVÉTEL "nincs ilyen értékű elem" 3. else if A[1] = érték then 4. return 1 5. else 6. return LINEÁRIS_KERES_REK(A[2..méret(A)], érték) + 1 7. end if

Algoritmusok vektorokkal keresések 3 function BINÁRIS_KERES1(A, érték) - - bináris keresés iteratívan 1. alsó 1 2. felső méret(a) 3. while alsó felső do 4. középső [(alsó + felső) / 2] 5. if A[középső] = érték then 6. return középső 7. else if A[középső] > érték then 8. felső középső 1 9. else 10. alsó középső + 1 11. end if 12. end while 13. KIVÉTEL "nincs ilyen értékű elem" function BINÁRIS_KERES2(A, érték) - - bináris keresés rekurzívan 1. if méret(a) = 0 then 2. KIVÉTEL "nincs ilyen értékű elem" 3. end if 4. középső [(1 + méret(a)) / 2] 5. if A[középső] = érték then 6. return középső 7. else if A[középső] > érték then 8. return BINÁRIS_KERES2(A[1..középső 1], érték) 9. else 10. return középső + BINÁRIS_KERES2(A[középső + 1..méret(A)], érték) 11. end if

Algoritmusok vektorokkal keresések 4 function BINÁRIS_KERES3(A, érték, alsó, felső) - - bináris keresés rekurzívan, részvektorok nélkül 1. if alsó > felső then 2. KIVÉTEL "nincs ilyen értékű elem" 3. end if 4. középső [(alsó + felső) / 2] 5. if A[középső] = érték then 6. return középső 7. else if A[középső] > érték then 8. return BINÁRIS_KERES3(A, érték, alsó, középső 1) 9. else 10. return BINÁRIS_KERES3(A, érték, középső + 1, felső) 11. end if

Algoritmusok vektorokkal rendezések 5 procedure MIN_KIVÁL_RENDEZ(A) - - minimumkiválasztásos rendezés 1. for i 1 to méret(a) 1 do 2. min i 3. for j i + 1 to méret(a) do 4. if A[j] < A[min] then 5. min j 6. end if 7. end for 8. A[i] és A[min] felcserélése 9. end for procedure MAX_KIVÁL_RENDEZ(A) - - maximumkiválasztásos rendezés 1. i méret(a) 2. while i 2 do 3. max 1 4. for j 2 to i do 5. if A[j] > A[max] then 6. max j 7. end if 8. end for 9. A[i] és A[max] felcserélése 10. i i 1 11. end while procedure BESZÚRÁSOS_RENDEZ(A) - - beszúrásos rendezés 1. for i 2 to méret(a) do 2. kulcs A[i] 3. j i 1 4. while j 1 és A[j] > kulcs do 5. A[j + 1] A[j] 6. j j 1 7. end while 8. A[j + 1] kulcs 9. end for

Algoritmusok vektorokkal rendezések 6 procedure BUBORÉKOS_RENDEZ1(A) - - buborékos rendezés 1. i méret(a) 1 2. while i 1 do 3. for j 1 to i do 4. if A[j + 1] < A[j] then 5. A[j] és A[j + 1] felcserélése 6. end if 7. end for 8. i i 1 9. end while procedure BUBORÉKOS_RENDEZ2(A) - - javított buborékos rendezés 1. i méret(a) 1 2. volt_csere IGAZ 3. while i 1 és volt_csere do 4. volt_csere HAMIS 5. for j 1 to i do 6. if A[j + 1] < A[j] then 7. A[j] és A[j + 1] felcserélése 8. volt_csere IGAZ 9. end if 10. end for 11. i i 1 12. end while

Algoritmusok vektorokkal rendezések 7 procedure BUBORÉKOS_RENDEZ3(A) - - tovább javított buborékos rendezés 1. i méret(a) 1 2. while i 1 do 3. utolsó_csere 1 4. for j 1 to i do 5. if A[j + 1] < A[j] then 6. A[j] és A[j + 1] felcserélése 7. utolsó_csere j 8. end if 9. end for 10. i utolsó_csere 1 11. end while procedure SHELL_RENDEZ1(A) - - shell rendezés beszúrásos rendezéssel 1. LK {100,30,8,3,1} 2. for k 1 to méret(lk) do 3. lépésköz LK[k] 4. for eltolás 1 to lépésköz do 5. i lépésköz + eltolás 6. while i méret(a) do 7. kulcs A[i] 8. j i lépésköz 9. while j 1 és A[j] > kulcs do 10. A[j + lépésköz] A[j] 11. j j lépésköz 12. end while 13. A[j + lépésköz] kulcs 14. i i + lépésköz 15. end while 16. end for 17. end for

Algoritmusok vektorokkal rendezések 8 procedure SHELL_RENDEZ2(A) - - egyszerűsített shell rendezés beszúrásos rendezéssel, - - és általánosított lépésköz választással 1. k 1 2. repeat 3. lépésköz 3 * lépésköz + 1 4. until lépésköz méret(a) 5. while lépésköz > 1 do 6. lépésköz (lépésköz 1) / 3 7. for i lépésköz + 1 to méret(a) do 8. kulcs A[i] 9. j i lépésköz 10. while j 1 és A[j] > kulcs do 11. A[j + lépésköz] A[j] 12. j j lépésköz 13. end while 14. A[j + lépésköz] kulcs 15. end for 16. end while

Algoritmusok vektorokkal rendezések 9 procedure GYORS_RENDEZ1(A, alsó, felső) - - gyorsrendezés, 1. változat 1. if alsó < felső then 2. kulcs A[alsó] 3. i alsó 4. j felső + 1 5. while i < j do 6. repeat 7. i i + 1 8. until i j vagy A[i] kulcs 9. repeat 10. j j 1 11. until A[j] kulcs 12. if i < j then 13. A[i] és A[j] felcserélése 14. end if 15. end while 16. A[alsó] és A[j] felcserélése 17. GYORS_RENDEZ1(A, alsó, j 1) 18. GYORS_RENDEZ1(A, j + 1, felső) 19. end if procedure GYORS_RENDEZ2(A, alsó, felső) - - gyorsrendezés, 2. változat 1. if alsó < felső then 2. határ FELOSZT(A, alsó, felső) 3. GYORS_RENDEZ2(A, alsó, határ 1) 4. GYORS_RENDEZ2(A, határ + 1, felső) 5. end if

Algoritmusok vektorokkal rendezések 10 function FELOSZT(A, alsó, felső) 1. kulcs A[felső] 2. i alsó 1 3. for j alsó to felső 1 do 4. if A[j] kulcs then 5. i i + 1 6. A[i] és A[j] felcserélése 7. end if 8. end for 9. A[i + 1] és A[felső] felcserélése 10. return i + 1 procedure KUPAC_RENDEZ(A) - - Kupacrendezés 1. i [méret(k)/2] 2. while i > 0 do 3. SÜLLYESZT(K, i, méret(k)) 4. i i 1 5. end while 6. i méret(k) 7. while i > 1 do 8. K[1] és K[i] felcserélése 9. i i 1 10. SÜLLYESZT(K, 1, i) 11. end while

Algoritmusok vektorokkal rendezések 11 procedure SÜLLYESZT(K, honnan, vége) - - A bináris (maximum) kupac tulajdonságai teljesülnek - - A K vektor honnan-nál nagyobb indexeire. - - Az algoritmus kiterjeszti ezeket a honnan indexre is. 1. x K[honnan] 2. gyermek honnan + honnan 3. while gyermek vége 4. if gyermek < vége és K[gyermek + 1] > K[gyermek] then 5. gyermek gyermek + 1 6. end if 7. if K[gyermek] > x then 8. K[honnan] K[gyermek] 9. honnan gyermek 10. gyermek honnan + honnan 11. else 12. gyermek vége + 1 13. end if 14. end while 15. K[honnan] x procedure SÜLLYESZT_REK(K, honnan, vége) - - A bináris (maximum) kupac tulajdonságai teljesülnek - - A K vektor honnan-nál nagyobb indexeire. - - A rekurzív algoritmus kiterjeszti ezeket a honnan indexre is. 1. gyermek honnan + honnan 2. if gyermek < vége és K[gyermek + 1] > K[gyermek] then 3. gyermek gyermek + 1 4. end if 5. if gyermek vége és K[gyermek] > K[honnan] then 6. K[gyermek] és K[honnan] felcserélése 7. SÜLLYESZT(K, gyermek, vége) 8. end if

Algoritmusok vektorokkal rendezések 12 procedure ÖSSZEFÉSÜLVE_RENDEZ(A) - - egy vektor összefésülésen alapuló rendezése 1. rendezett 1 2. méret(b) méret(a) 3. while rendezett < méret(a) do 4. ÖSSZEFÉSÜL_1(A, B, rendezett) 5. ÖSSZEFÉSÜL_1(B, A, rendezett) 6. end while

Algoritmusok vektorokkal rendezések 13 procedure ÖSSZEFÉSÜL_1(A, B, rendezett) - - egy vektor összefésülésen alapuló rendezésének egy fázisa 1. k 1 2. repeat 3. i k 4. j a k + rendezett 5. b a + rendezett 6. if a > méret(a) then 7. a méret(a) + 1 8. end if 9. if b > méret(a) then 10. b méret(a) + 1 11. end if 12. while i < a és j < b do 13. if A[i] > A[j] then 14. B[k] A[j] 15. j j + 1 16. else 17. B[k] A[i] 18. i i + 1 19. end if 20. k k + 1 21. end while 22. while i < a do 23. B[k] A[i] 24. i i + 1 25. k k + 1 26. end while 27. while j < b do 28. B[k] A[j] 29. j j + 1 30. k k + 1 31. end while 32. until k > méret(a) 33. rendezett rendezett + rendezett

Algoritmusok vektorokkal Dinamikus vektorok elemi műveletei 14 function ÖSSZEFÉSÜL(A, B) - - két rendezett vektor összefésülése dinamikus vektor esetén 1. méret(c) méret(a) + méret(b) 2. i j k 1 3. while i méret(a) és j méret(b) do 4. if A[i] < B[j] then 5. C[k] A[i] 6. i i + 1 7. else 8. C[k] B[j] 9. j j + 1 10. end if 11. k k + 1 12. end while 13. while i méret(a) do 14. C[k] A[i] 15. i i + 1 16. k k + 1 17. end while 18. while j méret(b) do 19. C[k] B[j] 20. j j + 1 21. k k + 1 22. end while 23. return C - - Algoritmusok vektorokkal Dinamikus vektorok elemi műveletei procedure BESZÚR(V, index, érték) - - új elem beszúrása dinamikus vektor adott indexű eleme elé 1. if index < 1 vagy index > méret(v) + 1 then 2. KIVÉTEL "hibás index" 3. end if 4. i méret(v) méret(v) + 1 5. while i > index do 6. V[i] V[i 1] 7. i i 1 8. end while 9. V[i] érték

Algoritmusok vektorokkal Dinamikus vektorok elemi műveletei 15 procedure TÖRÖL(V, index) - - adott indexű elem törlése dinamikus vektorból 1. if index < 1 vagy index > méret(v) then 2. KIVÉTEL "hibás index" 3. end if 4. for i index to méret(v) 1 do 5. V[i] V[i + 1] 6. end for 7. méret(v) méret(v) 1