Sobes.tech
Junior

Mi a különbség a tömb és a lista között?

sobes.tech MI

Válasz az MI-től

A tömbnek fix mérete van, amit létrehozáskor határoznak meg. A lista dinamikusan változtatja méretét az elemek hozzáadásakor vagy eltávolításakor.

A tömb elemei index alapján érhetők el O(1) idő alatt. A lista elemeihez való hozzáférés változó lehet, például egy egysoros láncolt lista index szerint O(n), míg az ArrayList átlagosan O(1).

A tömbben az elemek folyamatos memóriaterületeken tárolódnak, ez jobb cache teljesítményt biztosít. A listában az elemek széttagolhatottak a memóriában, pointerekkel összekapcsolva.

A beszúrás és törlés a tömb közepén költséges, mivel minden következő elemet el kell tolni, ez O(n). A listákban ezek az műveletek hatékonyabbak lehetnek (pl. láncolt listákban O(1), ha van mutató az elemre, különben O(n) kereséshez), de mutatókat kell frissíteni.

A tömbök közvetlenül primitív típusokat tárolhatnak. A listák általában objektumokra mutató hivatkozásokat tartalmaznak (primitive típusok wrapperjei).

// Példa tömb
int[] array = new int[5];
array[0] = 10; // Elérés O(1)

// Példa ArrayList-re (Java listára)
import java.util.ArrayList;
import java.util.List;

List<Integer> list = new ArrayList<>();
list.add(10); // Hozzáadás átlagosan O(1)
list.get(0); // Elérés átlagosan O(1)
# NumPy tömb példa
import numpy as np
array = np.array([1, 2, 3]) # Fix méret

# Lista példa
data_list = [1, 2, 3]
data_list.append(4) # Dinamikus méret

data_list[0] # Elérés O(1)

Összehasonlítás:

Jellemző Tömb Lista
Méret Fix Dinamik
Index szerinti elérés O(1) Változó (gyakran O(1) vagy O(n))
Memória Kontiguó Szétszórt lehet
Beszúrás/Törlés O(n) középen Változó (lehet O(1))
Adattípusok Primitív és objektumok Általában objektumokra mutató hivatkozások