Sobes.tech
Junior

У чему се разликује низ и листа?

sobes.tech АИ

Одговор од АИ

Масив има фиксни размер, одређен при креирању. Листа динамички мења свој размер при додавању или уклањању елемената.

Приступ елементима масива се врши по индексу у O(1) време. Приступ елементима листе може варирати, на пример, једноставна повезана листа има приступ по индексу у O(n), док је ArrayList у просеку у O(1).

У масиву, елементи се чувају у континуираним областима меморије, што обезбеђује бољу кеш-перформансу. У листи, елементи могу бити распршени у меморији, повезани показивачима.

Операције уметања и брисања у средини масива захтевају померање свих следећих елемената, што може бити скупо (O(n)). У листама, ове операције могу бити ефикасније (на пример, у повезаним листама O(1) ако постоји показивач на елемент, у супротном O(n) за претрагу), али захтевају ажурирање показивача.

Масиви могу директно чувати примитивне типове. Листе обично чувају референце на објекте (обвивке за примитивне типове).

// Пример масива
int[] array = new int[5];
array[0] = 10; // Приступ O(1)

// Пример ArrayList (лист у Јави)
import java.util.ArrayList;
import java.util.List;

List<Integer> list = new ArrayList<>();
list.add(10); // Додавање O(1) у просеку
list.get(0); // Приступ O(1) у просеку
# Пример масива (numpy array)
import numpy as np
array = np.array([1, 2, 3]) # Фиксна величина

# Пример листе
data_list = [1, 2, 3]
data_list.append(4) # Динамичка величина

data_list[0] # Приступ O(1)

Упоређивање:

Карактеристика Масив Листа
Величина Фиксна Динамичка
Приступ по индексу O(1) Варијабилна (често O(1) или O(n))
Памћење Континуирано Може бити распршено
Уметање/Брисање O(n) у средини Варијабилно (може бити O(1))
Типови података Примитивни и објекти Обично референце на објекте