Фарқи байни массив ва рӯйхат чист?
sobes.tech AI
Ҷавоб аз AI
Масив дороест, ки андозаи муайян дорад, ки ҳангоми эҷод кардан муайян мешавад. Лист тағйирёбандаи андозаи худро дорад, вақте ки элементҳоро илова мекунад ё хориҷ мекунад.
Дастрасӣ ба элементҳои масив тавассути индекс дар вақти O(1) сурат мегирад. Дастрасӣ ба элементҳои лист метавонад тағйир ёбад, масалан, листи пайвастшаванда оддӣ ба индекс дар O(n) дастрасӣ дорад, дар ҳоле ки ArrayList дар миёна O(1).
Дар масив, элементҳо дар минтақаҳои пайвастии хотира нигоҳ дошта мешаванд, ки беҳтарини иҷрои кэшро таъмин мекунад. Дар лист, элементҳо метавонанд дар хотира пароканда бошанд, бо нишондиҳандаҳо пайваст шудаанд.
Операцияҳои ворид кардан ва хориҷ кардан дар маркази масив талаб мекунанд, ки ҳамаи элементҳои пас аз он ҳаракат кунанд, ки метавонад гарон бошад (O(n)). Дар лист, ин оператсияҳо метавонанд самараноктар бошанд (масалан, дар листҳои пайваст O(1) агар нишондиҳанда ба элемент мавҷуд бошад, дар ғайри ҳол O(n) барои ҷустуҷӯ), аммо онҳо бояд нишондиҳандаҳоро навсозӣ кунанд.
Масивҳо метавонанд мустақиман намудҳои primitives-ро нигоҳ доранд. Листҳо одатан ба объектҳо ишора мекунанд (пӯшишҳо барои намудҳои primitives).
// Намунаи масив
int[] array = new int[5];
array[0] = 10; // Дастрасӣ O(1)
// Намунаи ArrayList (лист дар Java)
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)) |
| Намудҳои додаҳо | primitives ва objects | Аксар вақт ишораҳо ба объектҳо |