Programozás elméleti fájlok módosítása (2024. 11. 26.)

This commit is contained in:
Tóth Ádám 2024-11-26 13:00:06 +01:00
parent 9bfce22ddf
commit fb48452312
4 changed files with 11 additions and 11 deletions

View File

@ -18,7 +18,7 @@ Aszimptotikus hatékonyság:
Ha a bemenet mérete elég nagy, akkor az algoritmus futási idejének csak a nagyságrendje érdekes. Ha a bemenet mérete elég nagy, akkor az algoritmus futási idejének csak a nagyságrendje érdekes.
Az O (Ordó) jelölés: Az O (Ordó) jelölés:
A O jelölést arra használjuk, ahogy a futási idő növekedését aszimptotikusan alulról és felülről konstant távolságra behatároljuk. A O jelölést arra használjuk, hogy a futási idő növekedését aszimptotikusan alulról és felülről konstant távolságra behatároljuk.
Például a bináris keresés futási ideje legrosszabb esetben O(log2n), helytelen lenne azt állítani, hogy a bináris keresés futási ideje O(log2n) minden esetben. Például a bináris keresés futási ideje legrosszabb esetben O(log2n), helytelen lenne azt állítani, hogy a bináris keresés futási ideje O(log2n) minden esetben.
A bináris keresés futási ideje soha nem rosszabb, mint O(log2n), de van, amikor ennél jobb. A bináris keresés futási ideje soha nem rosszabb, mint O(log2n), de van, amikor ennél jobb.
@ -32,7 +32,7 @@ Tömb
A tömb egy olyan adatszerkezet, amely menet közben nem méretezhető át. Tehát ha új elemeket szeretnénk egy meglévő tömbhöz adni, az csak úgy fog működni, hogy létrehozunk egy új tömböt, ami az új elemek és a meglévő elemek tárolására alkalmas, ezután pedig bemásoljuk a meglévő elemeket és az új elemeket a teljesen új tömbünkbe. A tömb egy olyan adatszerkezet, amely menet közben nem méretezhető át. Tehát ha új elemeket szeretnénk egy meglévő tömbhöz adni, az csak úgy fog működni, hogy létrehozunk egy új tömböt, ami az új elemek és a meglévő elemek tárolására alkalmas, ezután pedig bemásoljuk a meglévő elemeket és az új elemeket a teljesen új tömbünkbe.
Tömbökben referencia típusokat is alkalmazhatunk, viszont ebben az esetben nem elég példányosítani a tömböt, az egyes elemeket is példányosítani kell, mivel ebben az esetben a tömb csak az objektumra mutató referenciát tárolja, így példányosítás nélkül a tömb elemeinek értéke null lesz. Tömbökben referencia típusokat is alkalmazhatunk, viszont ebben az esetben nem elég példányosítani a tömböt, az egyes elemeket is példányosítani kell, mivel ebben az esetben a tömb csak az objektumra mutató referenciát tárolja, így példányosítás nélkül a tömb elemeinek értéke null lesz.
Az osztályokat ben muszáj a konstruktuk segítségével példányosítani. Erre célra vezették be a nyelvben az Object Initializer szintaxist, amivel egy osztály adattagjai úgy adhatók meg, mint egy tömb elemei. Az osztályokat tömbben muszáj a konstruktoruk segítségével példányosítani. Erre a célra vezették be a nyelvben az Object Initializer szintaxist, amivel egy osztály adattagjai úgy adhatók meg, mint egy tömb elemei.
Ez akkor jön jól, ha van egy osztályunk, amely adattagokkal rendelkezik de a konstruktor az objektum minden adattagjának beállításához nagyon összetett és komplikált lenne. Ebben az esetben nem érdemes konstruktort írni. Az objektum inicializáló szintaxis a következő: Ez akkor jön jól, ha van egy osztályunk, amely adattagokkal rendelkezik de a konstruktor az objektum minden adattagjának beállításához nagyon összetett és komplikált lenne. Ebben az esetben nem érdemes konstruktort írni. Az objektum inicializáló szintaxis a következő:
var objektum = new Osztaly() var objektum = new Osztaly()

View File

@ -1,9 +1,9 @@
Adatstruktúra interfészek Adatstruktúra interfészek
A kollekcióhoz kapcsolódó interfészek közül az egyik legfontosabb az IEnumerable<T> interfész. Ez teszi lehetővé, hogy mindegyik. A kollekcióhoz kapcsolódó interfészek közül az egyik legfontosabb az IEnumerable<T> interfész. Ez teszi lehetővé, hogy mindegyik kollekción implementációtól függetlenül végig tudjuk iterálni egy foreach ciklussal.
Az absztrakció következő szintje az IReadOnlyCollection<T> és ICollection<T> interfészek. Az ICollection<T> egy módosítható kollekciót ír le, aminek az elemei törölhetőek és bővíthetőek. Az IReadOnlyCollection<T> pedig egy olyant, amiből csak olvasni tudunk, de tudjuk az elemek számát. Az absztrakció következő szintje az IReadOnlyCollection<T> és ICollection<T> interfészek. Az ICollection<T> egy módosítható kollekciót ír le, aminek az elemei törölhetőek és bővíthetőek. Az IReadOnlyCollection<T> pedig egy olyat, amiből csak olvasni tudunk, de tudjuk az elemek számát.
Az olyan típusok esetén, mint a lista, halmaz és asszociatív tömb kapunk speciális interfészeket, mind olvasható és módosítható változatban is. Az olyan típusok esetén, mint a lista, halmaz és asszociatív tömb kapunk speciális interfészeket, mind olvasható és módosítható változatban is.
@ -17,4 +17,4 @@ Egy sokkal jobb megoldás lehet nagy mennyiségú, előre nem ismert számú ada
A láncolt lista egy eleme két részből épül fel. Egyrészt tartalmazza a tárolni kívánt adatot, vagy adatokat és tartalmaz egy olyan mutatót, ami a lista egy másik elemét mutatja. Ha referencia a következő elemre nem létezik, akkor a lánc végén vagyunk. A láncolt lista egy eleme két részből épül fel. Egyrészt tartalmazza a tárolni kívánt adatot, vagy adatokat és tartalmaz egy olyan mutatót, ami a lista egy másik elemét mutatja. Ha referencia a következő elemre nem létezik, akkor a lánc végén vagyunk.
A láncolt lista a dinamikus tömbökhöz képest hátránya a közbülső elemek elérhetőségéből ered. Míg egy tömb esetén ha tudjuk, hogy a k. elemet szeretnénk elérni, akkor a tömb idnexelésével rögtön hozzáférhetünk ehhez az adathoz, addig a láncolt listában a lista elejéről indulva a mutatókon keresztül addig kell lépkedni, míg a k. elemhez nem érünk. A véletlenszerű lista elem megtalálása a lista hosszávak arányos időt igényel. A láncolt lista a dinamikus tömbökhöz képest hátránya a közbülső elemek elérhetőségéből ered. Míg egy tömb esetén ha tudjuk, hogy a k. elemet szeretnénk elérni, akkor a tömb indexelésével rögtön hozzáférhetünk ehhez az adathoz, addig a láncolt listában a lista elejéről indulva a mutatókon keresztül addig kell lépkedni, míg a k. elemhez nem érünk. A véletlenszerű lista elem megtalálása a lista hosszával arányos időt igényel.

View File

@ -18,7 +18,7 @@ Kétszeresen láncolt lista esetén a 2db hivatkozás (zöld és sárga) van egy
Mint a listák esetében is a LinkedList beírása után a <> jelek közé kerül a láncolt listák típusa és a megszokott név, egyenlőségjel a new operátor, valamint újra a LinkedList és el ne felejtsük a zárójeleket! Mint a listák esetében is a LinkedList beírása után a <> jelek közé kerül a láncolt listák típusa és a megszokott név, egyenlőségjel a new operátor, valamint újra a LinkedList és el ne felejtsük a zárójeleket!
Ezután a LinkedList.AddLast(érték) metódussal tudunk a listánk végére beszúrszni egy elemet, vagy például az AddFirst(érték) metódussal pedig a lista első helyére. Ezután a LinkedList.AddLast(érték) metódussal tudunk a listánk végére beszúrni egy elemet, vagy például az AddFirst(érték) metódussal pedig a lista első helyére.
A láncolt listák fontos metódusai A láncolt listák fontos metódusai
@ -34,4 +34,4 @@ LinkedListNode<T> = LinkedList.Find(keresett érték): Egy LinkedList-ben vissza
Csomópontok - LinkedListNode Csomópontok - LinkedListNode
Egy listából létrehozhatunk egy-egy csomópontot, melyben az adott csomóponthoz tartozó érték és a következő csomópontra való hivatkozás van. A következő csomópontra való ugráshoz a .Next metódust kell használnunk, hogy visszafele közlekedjünk, pedig a .Previous metódust kell használnunk. A .Value metódus az adott csomópontban eltárolt adatpt adja vissza. mivel tudjuk, hogy a láncolt listák utolsó, illetve első eleme null értékú, így egy while while ciklussal is végig tudunk menni az adott láncolt listán, a léptetésről a Next gondoskodik. Egy listából létrehozhatunk egy-egy csomópontot, melyben az adott csomóponthoz tartozó érték és a következő csomópontra való hivatkozás van. A következő csomópontra való ugráshoz a .Next metódust kell használnunk, hogy visszafele közlekedjünk, pedig a .Previous metódust kell használnunk. A .Value metódus az adott csomópontban eltárolt adatot adja vissza. Mivel tudjuk, hogy a láncolt listák utolsó, illetve első eleme null értékú, így egy while ciklussal is végig tudunk menni az adott láncolt listán, a léptetésről a Next gondoskodik.

View File

@ -1,11 +1,11 @@
Verem (stack) Verem (stack)
A verem egy olyan adatszerkezet, amelyben az utoljára betett elemet tudjuk feldolgozni. LIFO (Last In First Out). A veremből mindig a legfelső elemet látjuk csak, amelyet a veremmutatóval jelzünk. Ahhoz, hogy az alsóhoz hozzáférjünk, ki kell szedni a felette lévő elemeket. A verem egy olyan adatszerkezet, amelyben az utoljára betett elemet tudjuk feldolgozni. LIFO (Last In First Out). A veremből mindig a legfelső elemet látjuk csak, amelyet a veremmutatóval jelzünk. Ahhoz, hogy az alsóhoz hozzáférjünk, ki kell szedni a felette lévő elemeket.
Két fontos műveletet különböztetünk meg. Az egyik az adott elem verembe helyezése Push, a másik pedig a legffelső elem kivéve a veremből Pop. Két fontos műveletet különböztetünk meg. Az egyik az adott elem verembe helyezése Push, a másik pedig a legfelső elem kivéve a veremből Pop.
A Stack<t> osztály fontosabb tulajdnságai és metódusai: A Stack<t> osztály fontosabb tulajdnságai és metódusai:
Stack (int capacity) Stack (int capacity)
Paraméteres konstruktor. A paraméter a kiindulásként tárolni kívánt elemk számát adja meg. Paraméteres konstruktor. A paraméter a kiindulásként tárolni kívánt elemek számát adja meg.
Stack(IEnumerable<T> collection) Stack(IEnumerable<T> collection)
Paraméteres konstruktor. A verem elemei a paraméterként megadott IEnumerable felületet implementáló oszály elemei lesznek. Paraméteres konstruktor. A verem elemei a paraméterként megadott IEnumerable felületet implementáló oszály elemei lesznek.
@ -17,7 +17,7 @@ T Pop()
Visszaadja a verem tetején lévő elemet és az elemet eltávolítja a veremből. Visszaadja a verem tetején lévő elemet és az elemet eltávolítja a veremből.
void Push(T item) void Push(T item)
A paraméterként megadott elemt beilleszti a verem tetejére. A paraméterként megadott elemet beilleszti a verem tetejére.
T[] ToArray() T[] ToArray()
A verem elemeit visszaadja egy tömbben. A verem elemeit visszaadja egy tömbben.