Massiv və siyahı arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Massiv sabit ölçüdədir və yaradılarkən müəyyən edilir. Siyahı, elementlər əlavə edilərkən və ya silindikdə dinamik olaraq ölçüsünü dəyişir.
Massivin elementlərinə indeks vasitəsilə O(1) vaxtda çıxış edilir. Siyahıdakı elementlərə çıxış isə dəyişə bilər, məsələn, sadə əlaqəli siyahı indekslə O(n) vaxtda çıxış edir, ArrayList isə orta hesabla O(1).
Massivdə elementlər ardıcıl yaddaş sahələrində saxlanılır, bu isə daha yaxşı cache performansı təmin edir. Siyahıda isə elementlər yaddaşda yayılmış ola bilər, göstəricilərlə əlaqələndirilmişdir.
Massivdə yerləşdirmə və silmə əməliyyatları bütün sonrakı elementlərin hərəkət etdirməsini tələb edir, bu isə baha başa gələ bilər (O(n)). Siyahılarda bu əməliyyatlar daha səmərəli ola bilər (məsələn, əlaqəli siyahılarda, göstərici varsa O(1), yoxsa axtarış üçün O(n)), lakin göstəricilərin yenilənməsini tələb edir.
Massivlər birbaşa primitiv tipləri saxlaya bilər. Siyahılar adətən obyektə istinadlar saxlayır (primtiv tiplər üçün çərçivələr).
// Nümunə massiv
int[] array = new int[5];
array[0] = 10; // Giriş O(1)
// ArrayList nümunəsi (Java-da siyahı)
import java.util.ArrayList;
import java.util.List;
List<Integer> list = new ArrayList<>();
list.add(10); // Əlavə etmə O(1) orta hesabla
list.get(0); // Giriş O(1) orta hesabla
# Numpy array nümunəsi
import numpy as np
array = np.array([1, 2, 3]) # Sabit ölçü
# Siyahı nümunəsi
data_list = [1, 2, 3]
data_list.append(4) # Dinamik ölçü
# Giriş
data_list[0] # O(1)
Müqayisə:
| Xüsusiyyət | Array | Siyahı |
|---|---|---|
| Ölçü | Sabit | Dinamik |
| İndeksə görə giriş | O(1) | Dəyişkən (tez-tez O(1) və ya O(n)) |
| Yaddaş | Davamlı | Yayılmış ola bilər |
| Əlavə və silmə | O(n) ortada | Dəyişkən (O(1) ola bilər) |
| Məlumat tipləri | Primitiv və obyektlər | Adətən obyektə istinadlar |