This commit is contained in:
szabomarton
2024-11-15 11:16:13 +01:00
parent db1b67ebf8
commit 152126ad18
17 changed files with 338 additions and 0 deletions

View File

@@ -67,3 +67,72 @@ Tömb
Ezen adattagok beállítására továbbra is a konstruktor szintaxis használható.
Az osztályokat
Tömbök kezelését segítő metódusok
Length{ get;}
long Length{get;}
Visszaadja az aktuális tömb elemeinek a számát hosszú egész típusban.
Akkor jön jól, ha nagyon nagy méretű tömböket szeretnénk kezelni.
int Rank{get;}
Visszaadja a tömb dimenzióinak a számát
Ezen tulajdonságokon kívül az Array osztály számos statikus metódust tartalmaz,
amelyeket felhasználhatunk tömbök kezelésére.
Ezek közül a leghasznosabbak és legfontosabbak:
Array.Clear(Array array, int index,int length);
Array.Copy(Array sourceArray, Array destinationArray, int length);
Array.Copy(Array sourceArray, Array destinationArray, long length);
//harmadik paraméter a másolandó elemek száma
Array.Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
int Array.IndexOf(Array array, object value);
int Array.IndexOf(Array array, object value, int startIndex);
int Array.LastIndexOf(Array array, object value);
int Array.LastIndexOf(Array array, object value, int startIndex);
Array.Reverse(Array array);
Array.Reverse(Array array, int index, int length);
// második elem a kezdőelem indexét adja meg, a harmadik az elemk számát adja meg
Array.Sort(Array array);
//Akkor ha az IComperable<T> implem,entálva van
Array.Sort(Array keys, Array items);
//Két tömb elemeinek a sorbarendezése, méghozzá úgy,hogy az első paraméterként megadott tömb kulcsokat tartalmaz,
//amelyhez a második paraméterként megadott tömb értékek társulnak.
Adatstruktúra interfészek
A kollekciókhoz kapcsolódó interfészek közül az egyik legfontosabb az IEnumerable<T> interfész.
Ez teszi lehetővé, hpgy mindegyik kollekción implementáéciótól függetlenül végig tudjuk uteráléni egy foreach ciklussal.
Az absztrakció következő szintje az IReadOnlyCollection és a ICollection interfészek.
Az ICollection<T> egy módosítható kollekciót ír le aminek at elemei törölhetőek és bővíthetőek.
A 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 ... meg van valósítva mind a kettő.
Láncolt lista
A tömb adatszerkezet kiváló, ha előre tudjuk, hogy menni elemre van szükségünk.
A bővítés csak úgy lehetséges,ha létrehozunk egy újabb tömböt, aminek a mérete a hozzáadandó elemek számával meg van növelve.
Az új tömbbe átmásoljuk a meglévő elemeit, majd az új tömbhöz hozzáadjuk az új elemeket.
Végezetül pedig töröljük az eredeti tömböt.
Az algoritmus leírásából kiolvasható, hogy et nem éppen ideális,mivel a sebességre igen negatív hatással van a másolás.
Továbbá a másolás folyamán egy rövid időre duplázódik a programunk memóriahasználata.
Egy sokkal jobb megoldása lehet nagy mennyiségű előre nem ismert számú adat tárolására a láncolt lista szerkezet.
A láncolt lista egy eleme két részből épül fel. Egyrészt tartalmazza a tárolni kívánt adaott,
vagy adatokat és tartalmaz egy olyan mutatót, ami a lista eg másik elemét mutatja.
Ha a referencia a következő elemre nem létezik, akkor a lánc végén vagyunk.
A láncolt lista a dinamikus tömbhöz képest hátránya a közbülső elemnek elérhatőségéből ered.
Míg egy tömb esetén ha tudjuk,hogy a k. elemet szeretnénk elérnim akkor a tömb indexelésével rögtön hozzáférhefünk ehhet az adathoz, addog 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 értünk.
A véletlenszerű lista elem megtalálása a lista hosszával arányos időt igényel.