Junior
Programlamada diziler nasıl yapılandırılmıştır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Diziler, aynı türden öğelerin sıralı koleksiyonlarıdır ve ardışık (sıralı) bellek hücrelerinde saklanırlar.
Temel özellikler:
- İndeksleme: Öğelere erişim, 0'dan başlayan bir indeksle yapılır. İndeks, dizinin başlangıcından olan kaymayı gösterir.
- Boyut: Dizinin boyutu (öğe sayısı), statik tipli dillerde oluşturulduğunda sabittir veya dinamik tipli dillerde (örneğin, Swift
Array) dinamik olarak değişebilir. - Veri tipi: Dizinin tüm öğeleri aynı veri tipine sahip olmalıdır.
- Sıralık: Öğelerin ardışık bellek hücrelerinde saklanması, herhangi bir öğeye indeksle hızlı erişim sağlar.
İşlemler:
- İndeksle erişim: O(1) - sabit zaman.
- Sona ekleme/çıkarma: Ortalama O(1) - Swift
Arraygibi dinamik dizilerde. - Başlangıca veya ortaya ekleme/çıkarma: O(n) - doğrusal zaman, çünkü öğelerin kaydırılması gerekebilir.
Swift örneği:
// Bir dizi string oluşturma
var names: [String] = ["Alice", "Bob", "Charlie"]
// İndeksle öğeye erişim
let first_name = names[0] // "Alice"
// Öğeyi ekleme
names.append("David") // ["Alice", "Bob", "Charlie", "David"]
// Öğeyi kaldırma
names.remove(at: 1) // ["Alice", "Charlie", "David"]
// Dizi üzerinde yineleme
for name in names {
print(name)
}
İç yapısı (Swift Array tipi için):
Dinamik diziler genellikle statik olarak tahsis edilmiş bir bellek tamponu üzerine uygulanır. Tampon kapasitesine ulaşıldığında, daha büyük yeni bir tampon tahsis edilir ve eski öğeler kopyalanır (yeniden tahsis). Bu, sonuna ekleme işlemi için amortize O(1) karmaşıklık sağlar.