Dizi ile liste arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Dizi sabit bir boyuta sahiptir, oluşturulurken belirlenir. Liste, öğeler eklenip çıkarıldıkça dinamik olarak boyutunu değiştirir.
Diziye erişim indeks kullanılarak O(1) sürede yapılır. Listeye erişim ise değişkenlik gösterebilir, örneğin, tek bağlı liste indeks erişimini O(n) sürede sağlar, ArrayList ise ortalama O(1) sürede erişim sağlar.
Bir dizide, öğeler sürekli bellek alanlarında saklanır, bu da daha iyi önbellek performansı sağlar. Listede ise öğeler bellek içinde dağınık olabilir, göstericilerle bağlıdır.
Dizide, ortadaki ekleme ve silme işlemleri tüm sonraki öğelerin kaydırılmasını gerektirir, bu maliyetli olabilir (O(n)). Listelerde ise bu işlemler daha verimli olabilir (örneğin, bağlı listelerde, gösterici varsa O(1), aksi takdirde arama için O(n)). Ancak, göstericilerin güncellenmesi gerekir.
Diziler, temel veri tiplerini doğrudan saklayabilir. Listeler ise genellikle nesne referanslarını tutar (ilkel tipler için sarmalayıcılar).
// Dizi örneği
int[] dizi = new int[5];
dizi[0] = 10; // Erişim O(1)
// ArrayList örneği (Java'da liste)
import java.util.ArrayList;
import java.util.List;
List<Integer> liste = new ArrayList<>();
liste.add(10); // Ekleme ortalama O(1)
liste.get(0); // Erişim ortalama O(1)
# NumPy dizisi örneği
import numpy as np
dizi = np.array([1, 2, 3]) # Sabit boyut
# Liste örneği
data_listesi = [1, 2, 3]
data_listesi.append(4) # Dinamik boyut
data_listesi[0] # Erişim O(1)
Karşılaştırma:
| Özellik | Dizi | Liste |
|---|---|---|
| Boyut | Sabit | Dinamik |
| İndeks ile erişim | O(1) | Değişken (genellikle O(1) veya O(n)) |
| Bellek | Sürekli bellek alanları | Dağınık olabilir |
| Ekleme/Silme | O(n) ortada | Değişken (O(1) olabilir) |
| Veri tipleri | İlkel ve nesne | Genellikle nesne referansları |