У чему се разликује низ и листа?
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)) |
| Типови података | Примитивни и објекти | Обично референце на објекте |