Veri Yapısında Dizi – Açıklama, İşlev ve Örnekler
Yayınlanan: 2021-06-21Veri yapılarının, bilgisayar programlarının çoğuna yaygın olarak uygulanan neredeyse tüm programlama dillerinin çok önemli bir parçası olduğu kanıtlanmıştır. Tek bir veriye ayrı ayrı erişmek ve depolamak zaman alan bir süreç olduğundan, verilerin etkin bir şekilde yönetilebilmesi ve programlar tarafından erişilebilmesi veri yapıları aracılığıyla gerçekleşmektedir. Algoritmalar, bir veri yapısında ihtiyaç duyulan belirli işlemleri oluşturmak için özel olarak tasarlanmıştır. Bu nedenle, veri yapıları ve algoritmalar birlikte karmaşık uygulama ve programların temelini oluşturur.
Bu yazıda bir tür veri yapısı, yani Array üzerinde duracağız.
Dizi, öğelerin veya verilerin bitişik konumlarda depolandığı bir tür veri yapısıdır. Kullanıcı aynı veri tipine sahip bir veri setine sahip olduğunda, dizi veri yapısı bu veriyi düzenleme seçeneğidir. Bir dizinin boyutu, verilerin boyutuna bağlıdır. Öğeler bir dizide saklanmadan önce, tüm öğeleri etkin bir şekilde içermesi için dizinin boyutu tanımlanmalıdır. Bir dizide depolanan her öğenin, o öğenin dizideki yerini belirlemeye yardımcı olan, kendisine atanmış bir dizin değeri vardır. Dizinin ilk elemanının indeks değeri sıfırdır.
Bir dizi veri yapısıyla ilişkili önemli terimler şunlardır:
- Öğe : Öğe, veri yapısında depolanan her nesneyi veya öğeyi temsil eder.
- İndeks : İndeks, bir dizideki elemanın konumunu temsil eder. Sayısal bir değeri vardır.
Bir dizinin boyutu, farklı programlama dilleriyle değişir. Boyutuna bağlı olarak, bir dizi iki tür olabilir: statik ve dinamik dizi.
İçindekiler
1. Statik dizi:
Bu tür dizilerin boyutları oluşturulurken önceden tanımlanmıştır. Bu nedenle, statik diziler, sabit diziler veya sabit uzunluklu diziler olarak da bilinir. Dizi iki şekilde tanımlanabilir. Ya dizinin elemanları dizi oluşturulurken tanımlanabilir ya da dizinin boyutu dizi oluşturulurken tanımlanabilir. İkinci durumda, öğelerin belirtilmesi gerekli değildir. Varsayılan değerler, başlatılmamış bir diziye veya önceki tahsislerden bellekte kalan değerlere tahsis edilebilir.
Boyut tanımlandıktan sonra dizi küçülemez veya genişleyemez. Bir dizinin bildirilmesi sırasında bellek tahsis edildiğinden, diziyi yok edebilecek yalnızca derleyicidir. Kullanıcı, bir sonraki öğeye tahsis etmek için herhangi bir boş bellek olup olmadığından emin olmadığı için bir öğenin eklenmesi mümkün değildir.
Aşağıdaki tablo, farklı programlama dillerinde kullanılan dizilerin örneğini göstermektedir.
Programlama dili | Tanımlanmış dizi içerikleri | İçeriği olmayan dizinin tanımlı boyutu |
C++ | int işaretleri[] = {10, 20, 30}; | int işaretleri[3]; |
C# | int[] işaretler = {10, 20, 30}; | int[] işaretler = = yeni int[3]; |
Java | int[] işaretler = {10, 20, 30}; | int[] işaretler = = yeni int[3]; |
JavaScript | var işaretleri = [10, 20, 30]; | var işaretleri = new Array(3); |
piton | işaretler = [10, 20, 30] | işaretler = [Yok] * 3 |
Süratli | var değerleri:[Int] = [10, 20, 30] | var işaretleri: [Int] = [Int](tekrarlanan: 0, sayı: 3) |
2. Dinamik Dizi
Adından da anlaşılacağı gibi dizi dinamiktir, bu da elemanların çalışma süresi boyunca eklenebileceği veya kaldırılabileceği anlamına gelir. Uzunluğu sabit olan statik dizilerle karşılaştırıldığında, dinamik dizilerin dizinin sabit bir uzunluğu veya boyutu yoktur. Dinamik diziler oluşturmak ve yönetmek için çoğu programlama dilinde standart kitaplık işlevleri veya yerleşik işlevler mevcuttur.
Aşağıdaki tablo, farklı programlama dillerinde bir dizinin oluşturulmasını göstermektedir.
Programlama dili | Sınıf | elemanın eklenmesi | öğenin kaldırılması |
C++ | #include <list> standart::liste | sokmak | silmek |
C# | System.Collections.Generic.List | Ekle | Kaldırmak |
Java | java.util.ArrayList | Ekle | kaldırmak |
JavaScript | Dizi | itmek, birleştirmek | pop, ekleme |
piton | Liste | eklemek | kaldırmak |
Süratli | Dizi | eklemek | kaldırmak |
Bir dizinin temsili
Bir dizinin temsili, farklı programlama dillerinde uygulanmasına göre değişir. Python veri yapısının önemli bir parçası olan dizi , python programlama dilinde bir örnek olarak gösterilmiştir.
Python veri yapısında diziler , dizi anahtar sözcüğü aracılığıyla işlenir . Anahtar kelime dizisi her kullanıldığında, kullanıcının aynı veri tiplerinin öğelerini saklaması gerekir.
Kaynak
Şekil 1: Bir dizi örneği
Şekil 1'e göre, dizinin çizimi şunu göstermektedir:
- Dizinin boyutu 10'dur, yani dizide 9 eleman saklanabilir.
- 0 değeri ile başlayan dizinin üzerinde indeks değeri belirtilmiştir.
- Dizide depolanan elemanlar herhangi bir veri tipi olabilir ve elemana indeks değerleri üzerinden erişilebilir.
Python ve C++ sözdiziminin açıklandığı Şekil 2'de başka bir örnek gösterilmiştir .
Kaynak
Şekil 2 : Python ve C++ kullanarak dizi bildirimi (
Bir Dizinin Özellikleri
Bir dizi veri yapısının birkaç özelliği vardır:
- Bir dizi içinde depolanan elemanlar aynı veri tipine ve aynı boyuta sahiptir, yani int veri tipinin boyutu 4 bayt olacaktır.
- Bitişik bellek konumu, bir veri yapısının öğelerini depolamak için kullanılır. En küçük bellek, dizideki ilk öğeye tahsis edilir.
- İndeks değerleri, bir dizideki öğelerin konumunu bulmak için kullanılır. İndeks 0 ile başlar ve her zaman dizideki toplam eleman sayısından daha azdır.
- Mevcut indeks değeri sayesinde dizideki elemanlara rastgele erişim mümkündür. Elemanın adresi, bir ofset değerine eklenen temel adres aracılığıyla hesaplanabilir.
- Dizi kavramı, tüm programlama dillerinde aynı kalır. Yalnızca başlatma ve bildirim değişir.
- Dizi adı, öğeleri ve veri türü, tüm dillerde ortak olacak üç kısımdır.
dizi oluşturma
Python veri yapısında bir dizinin oluşturulması aşağıda gösterilmiştir.
- Python veri yapısındaki dizi modülü, bir dizi oluşturmak için içe aktarılabilir.
- dizi(veri_türü, değer_listesi ), python veri yapısında bir dizinin oluşturulabileceği sözdizimidir .
- Veri türü gerçek tamsayılar veya kayan değerler olmalıdır. Python'da dizelere izin verilmez.
Şekil 2, python'da bir dizinin nasıl oluşturulacağını gösterir. Python'da bir dizi modülünün nasıl içe aktarıldığını gösteren bir kod örneği
diziyi içe aktar
işaretler = dizi.array('i', [100,200,300])
yazdır(işaretler)
Bir dizinin bildirimi şu şekilde gerçekleştirilebilir:
diziAdı = dizi.array(veri türü için kod yazın, [dizi,öğeler])
Bu, Şekil 3'te gösterilebilir.
Kaynak
Şekil 3: Python'da dizi bildirimi
Dizi oluştururken kullanılan önemli terimler:
- Tanımlayıcı: Değişkenler için bir ad gibi belirtilmesi gereken bir ad
- Modül: dizi adı verilen özel modül python'a aktarılmalıdır.
- Yöntem: Bir diziyi python'da başlatmak için özel bir yöntemdir. Alınan iki bağımsız değişken, tip kodu ve öğeleri yedi.
- Tip Kodu: Veri tipi, mevcut tip kodu ile belirtilmelidir.
- Öğeler: Dizi öğeleri köşeli parantez içinde belirtilmelidir, örneğin [200,400,100.]
Mevcut tip kodu aşağıda gösterilmiştir
Dizi İşlemleri
Veri yapılarının ve algoritmaların mevcudiyeti ile her türlü veri yapısında çeşitli işlemler gerçekleştirilebilir. Bir dizi veri yapısı , bir öğeyi ekleme, silme, erişim ve güncelleme gibi işlemlere sahip olabilir.
Python veri yapısının bir dizisinde yapılabilecek işlemler aşağıda listelenmiştir.
1. Diziye eleman eklenmesi
- Bir diziye eleman eklemek için yerleşik insert() işlevi kullanılır.
- Kullanılan sözdizimi : diziAdı.insert(dizin, değer)
- Insert() işlevi aracılığıyla diziye bir veya birden fazla öğe eklenebilir.
- Öğeler, dizinin başına veya Input: append() işlevi kullanılarak herhangi bir belirli konuma eklenebilir.
diziyi içe aktar
işaretler = dizi.array('i', [200,500,600])
işaretler.insert(1, 150)
Çıktı: dizi('i', [200,150,500,600])
Aşağıda kodlu bir örnek gösterilmektedir.
Kodun çıktısı:
Kaynak
2. Dizideki bir elemanın silinmesi
- Bir eleman, değeri aracılığıyla diziden silinebilir.
- Kullanılan sözdizimi: diziAdı.remove(değer)
- Örnek: 100, 300, 200, 500 ve 800 öğelerine sahip diziye eklendikten sonra 250 değerinin çıkarılması.
Giriş:
diziyi içe aktar
işaretler = dizi.array('i', [100,300,200,500,800])
işaretler.insert(1, 250)
yazdır(işaretler)
işaretler.kaldır(250)
Çıktı: dizi('i', [100,300,200,500,800])
Alınan bir kod örneği
Kaynak
Kodun çıktısı:
3. Bir dizideki öğelere erişme
- dizin operatörü [ ] , bir dizideki öğelere erişmek için kullanılır.
- Dizin numarası, dizideki herhangi bir öğeye erişmek için kullanılır .
Aşağıdan alınan bir kod örneği aşağıda gösterilmiştir.
Kodun çıktısı:
Kaynak
4. Bir dizideki eleman aranıyor.
- Bir dizideki bir öğeyi aramak için yerleşik index() yöntemi kullanılır.
- Aranacak elemanın indeks değeri fonksiyon tarafından döndürülür.
- Örnek: 100, 250, 300, 200, 500 ve 800 öğeleri dizisinde 250 öğesini aramak.
Girdi: diziyi içe aktar
işaretler = dizi.array('I', [100,250,300,200,500,800])
print(marks.index(250))
Çıktı: 1
Bir dizideki bir öğeyi aramak için bir kod
Kodun çıktısı
Kaynak
3. Bir dizideki öğeleri güncelleme
- Bir öğeyi güncelleme işlemi, mevcut değerin güncellenirken verilen dizinde değiştirilecek olmasıyla tek farkla ekleme yöntemine benzer.
- Yeni değer, bir dizideki öğeyi güncellemek için dizine yeniden atanır.
- Örnek: 100, 250, 300, 200, 500 ve 800 öğeleri dizisinde 250 öğesini 350 ile güncelleme.
Girdi: diziyi içe aktar
işaretler = dizi.array('i', [100,250,300,200,500,800])
işaretler[1] = 350
Çıktı:
dizi('i', [100,350,300,200,500,800])
Bir öğenin güncellenmesini gösteren bir kod aşağıda gösterilmiştir.
Kodun çıktısı
Kaynak
Dizinin Avantajları
- Her eleman için ayrı değişkenler oluşturmak yerine birden çok değeri tek bir değişkende saklamak mümkündür.
- Diziler kullanılarak birden çok değer kolay ve hızlı bir şekilde işlenebilir.
- Dizinin elemanları daha hızlı bir şekilde sıralanabilir ve aranabilir.
Çözüm
Makale, dizi ve bununla ilişkili işlemler gibi özel bir veri yapısı türünü tartıştı. Temel kavramlarla, gerçek hayat problemlerini hedefleyen daha karmaşık programlar oluşturulabilir. Python'da veri yapısı konseptlerinizin temellerini güçlendirmek istiyorsanız, upGrad'ın Veri Biliminde Yönetici PG Programının aşağıdaki kursuna başvurabilirsiniz. Kurs, IIIT-Bangalore tarafından onaylanmıştır ve sektöre doğru yolculuğunuzu hazırlamak için 14'ten fazla programlama aracına ve diline sahiptir. 21 ila 45 yaş arasındaki giriş seviyesi profesyoneller için özel olarak tasarlanmıştır. Bu nedenle, öğreniminizi burada bırakmayın ve upGrad kursu aracılığıyla dili ve makine öğrenimi dünyasındaki uygulamasını öğrenin. Herhangi bir sorunuz olması durumunda, yardım ekibimiz size yardımcı olmak için orada olacaktır.
Dizi, güçlü bir doğrusal veri yapısıdır. Bununla birlikte, aşağıda belirtilen dezavantajların yanı sıra bazı avantajları da vardır: Aşağıda bir dizi ve liste arasındaki fark gösterilmektedir. Dizi veri yapısının gerçek hayatta birçok uygulaması vardır ve ayrıca kullanıcı tanımlı diğer veri yapılarının uygulanması için bir temel olarak kullanılır. Dizilerin başlıca uygulamalarından bazıları şunlardır:Dizinin avantajları ve dezavantajları nelerdir?
Avantajlar
1. Bir dizide elemanlara indeks numaraları ile kolayca erişilebilir.
2. Diziler, birden çok benzer varlığı saklamak için kullanılabilir.
3. Arama işlemi oldukça uygundur. O(n) zamanında ve O(log n)'de sıralanmış bir dizide yapılabilir, burada n eleman sayısıdır.
Dezavantajları
1. Bir dizide bellek statik olarak tahsis edildiğinden, dizinin boyutu değiştirilemez.
2. Homojendir, yani bir dizide sadece benzer veri tipine sahip elemanlar saklanabilir. Bir dizi ve bir liste arasında ayrım yapmak?
Dizi -
1. Dizi veri yapısı homojendir, yani bir dizide yalnızca benzer veri türlerine sahip öğeler saklanabilir.
2. Diziyi kullanmadan önce modüllerin içe aktarılması gerekir.
3. Aritmetik işlemler doğrudan uygulanabilir.
4. Daha büyük veriler için tercih edilir.
4. Çok daha kompakt ve daha az bellek tüketir.
Liste -
1. Liste heterojendir ve içinde birden çok veri türünün öğelerini depolayabilir.
2. Python'da yerleşik olduğu için modülleri içe aktarmaya gerek yoktur.
3. Aritmetik işlemler doğrudan çalıştırılamaz.
4. Daha küçük veriler için tercih edilir.
5. Bellek tüketimi daha fazladır. Dizilerin başlıca uygulamalarını tanımlar mısınız?
1. Diziler, matris işlemlerini uygulamak ve gerçekleştirmek için kullanılır. Matrisler büyük ölçüde jeolojik araştırmalarda ve bilim ve araştırma deneylerinde kullanılır.
2. Dizi veri yapıları kullanılarak birkaç kullanıcı tanımlı veri yapısı uygulanır. Bunlar yığın, kuyruk, yığınlar, karma tablolar ve listeleri içerir.
3. Programlar, karşılaştırmalı olarak uzun olan geleneksel elif deyimlerini kullanmak yerine, kontrol akışını düzenlemek için dizileri kullanır.
4. CPU zamanlama işlemleri için yazılan algoritmalar da CPU performansını artırmak için dizi veri yapısını kullanır.
5. Grafikler, uygulamalarından biri olarak bitişiklik listelerini kullanır. Bu komşuluk listelerini oluşturmak için vektörler (dizi uygulaması) kullanılır.