Junior
Hogyan épülnek fel a tömbök a programozásban?
sobes.tech MI
Válasz az MI-től
A tömbök azonos típusú elemek rendezett gyűjteményei, amelyek egymás melletti (szekvenciális) memóriahelyeken tárolódnak.
Fő jellemzők:
- Indexelés: Az elemekhez való hozzáférés 0-tól kezdődő indexen keresztül történik. Az index a tömb elejétől való eltolódást mutatja.
- Méret: A tömb mérete (elemek száma) rögzített a létrehozáskor statikusan típusos nyelvekben, vagy dinamikusan változhat dinamikus típusú nyelvekben (pl. Swift
Array). - Adattípus: Minden tömb elemének ugyanazon adattípussal kell rendelkeznie.
- Szekvenciális elhelyezkedés: Az elemek egymás melletti memóriahelyeken való tárolása gyors hozzáférést biztosít bármely elemhez a index segítségével.
Műveletek:
- Hozzáférés index alapján: O(1) - állandó idő.
- Hozzáadás/eltávolítás a végén: O(1) átlagosan dinamikus tömbök esetén (Swift
Array). - Hozzáadás/eltávolítás a kezdetén vagy közepén: O(n) - lineáris idő, mivel az elemek eltolása szükséges lehet.
Példa Swift-ben:
// Stringekből álló tömb létrehozása
var names: [String] = ["Alice", "Bob", "Charlie"]
// Elem elérése index segítségével
let first_name = names[0] // "Alice"
// Elem hozzáadása
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
// Elem eltávolítása
names.remove(at: 1) // ["Alice", "Charlie", "David"]
// Iterálás a tömbön
for name in names {
print(name)
}
Belső szerkezet (dinamikus tömbök esetén Swift Array típus):
A dinamikus tömbök általában egy statikusan lefoglalt memória buffer felett valósulnak meg. Amikor a buffer kapacitása eléri a határt, egy nagyobb, új buffer kerül lefoglalásra, és a régi elemek másolásra kerülnek (reallocation). Ez biztosítja az amortizált O(1) komplexitást a végéhez való hozzáadásnál.