Bilmeniz Gereken 7 JavaScript Veri Yapıları
Veri Yapıları, birçok şirket tarafından en sık test edilen konulardan biridir. IT endüstrilerinin temelidir ve büyük ölçüde yapay zeka, işletim sistemleri, grafikler ve benzeri alanlarda kullanılır. Bu blog yazısında, her JS geliştiricisinin bilmesi gereken en çok kullanılan yedi JavaScript veri yapısını ele alacağım.
Veri Yapıları nedir?
Veri Yapısı, verileri verimli bir şekilde kullanılabilecek şekilde saklama ve düzenleme yoludur. Daha doğrusu, Veri Yapısı, bir grup veri değeri, birbirleriyle nasıl ilişkili oldukları ve bunlar üzerinde gerçekleştirilebilecek işlemler veya işlevler anlamına gelir. Veri yapısı, büyük veri gruplarını yönetmemizi ve kullanmamızı, kullanıcılardan gelen birden çok talebi aynı anda ele almamızı ve veri işlemeyi hızlandırmamızı sağlar.
JS’deki veri yapılarının türleri:
1.) Dizi
Diziler en temel veri yapısıdır. Bitişik bellek konumlarında birlikte depolanan benzer türdeki öğelerden oluşan bir gruptur ve her hücrenin verilerini seçmek için kullanılan karşılık gelen bir sayısal indeksi vardır. Tüm komut dosyası dilleri gibi, JavaScript’in dinamik dizileri vardır, yani boyutları önceden belirlenmemiştir veya veri türü yoktur.
Yaygın JavaScript Dizi Yöntemleri:
Bağlantılı liste;
Bağlantılı liste, öğelerin bitişik bellek konumlarında olmadığı doğrusal bir veri yapısıdır. Bir grup düğümden oluşur ve her düğümün kendi verileri ve bir sonraki düğüme adresi vardır . Bir dizide, öğeler dizine alınır ve bir öğeye anında ulaşabilirsiniz, ancak bağlantılı bir listede, başla başlamanız ve istediğiniz öğeye ulaşana kadar ilerlemeniz gerekir. Bağlantılı listenin avantajı, bağlantılı listedeki ekleme ve silme işlemlerinin diziden daha kolay olmasıdır, çünkü bir dizideki öğeler ardışık bir konumda depolanır. Ayrıca, bağlantılı listenin boyutu gereksinimlerimize göre büyüyüp küçülebileceğinden bellek tüketimi verimlidir.
Bağlantılı Listedeki Temel İşlemler
Yığın
Yığın, LIFO (Son Giren İlk Çıkar) veya FILO (İlk Giren Son Çıkar) ilkesini izleyen doğrusal bir veri yapısıdır. Yığının en üstteki öğesine işaret eden yalnızca bir işaretçi içerir. Yığına bir eleman eklediğimizde, yığının en üstüne eklenir ve ayrıca yığından bir eleman sildiğimizde yığının üstünden silinir.
Yığın üzerinde uygulanan ortak işlemler:
Kuyruklar
Kuyruk, FIFO (İlk Giren İlk Çıkar) ilkesini izleyen doğrusal bir veri yapısıdır . İki işaretçi, 1) ön işaretçi , 2) arka işaretçi içerir . Ön işaretçi, başlangıç
Ağaçlar
Ağaç, doğrusal olmayan hiyerarşik bir veri yapısı olup, kenarlarla birbirine bağlanan düğümlerden oluşur. Her düğüm, bazı verileri ve çocuk olarak adlandırılabilecek diğer düğümlerin bağlantılarını içerir. Ağacın en üstteki düğümü, kök düğüm olarak bilinir . Bağlı alt düğümlere sahip düğümler dahili düğümler olarak adlandırılırken, alt düğümleri olmayanlar harici düğümlerdir (yaprak düğümler).
Birkaç farklı ağaç türü vardır:
1.) İkili Ağaç
2.) İkili Arama Ağacı
3.) AVL Ağacı
4.) Dengeli ağaç
5.) Kırmızı siyah ağaç
6.) 2-3 ağaç
7.) N- ary tree
İkili Ağaç ve İkili Arama Ağacı tipik olarak en sık kullanılanlardır.
Ağaç Gösterimi:
Temel Terminoloji
Düğüm => Bir düğüm, bir veri ve alt düğümlerine işaretçi içeren bir varlıktır.
Edge => Herhangi iki düğüm arasındaki bağlantı bağlantısına Edge denir.
Kök => Bir ağacın en üstteki düğümüdür.
Ana => Herhangi bir düğümün öncülü olan düğüm, Ana Düğüm olarak adlandırılır.
Çocuk => Herhangi bir düğümün soyundan gelen düğüme Çocuk Düğüm denir.
Kardeşler => Aynı ebeveyne ait olan düğümlere Kardeşler denir.
Yaprak => Çocuğu olmayan düğüme Yaprak Düğümü denir.
Dahili Düğümler => En az bir çocuğu olan düğüme Dahili Düğüm denir.
Derece => Bir düğümün toplam çocuk sayısı o Düğümün DERECESİ olarak adlandırılır.
Seviye => Yukarıdan aşağıya her adım, bir ağacın Seviyesi olarak adlandırılır. Kök düğümün Düzey 0’da olduğu ve kök düğümün çocuklarının Düzey 1’de olduğu ve Düzey 1’deki düğümlerin alt düzeylerinin Düzey 2’de olacağı söylenir …
Bir düğüm yüksekliği => bir düğüm yüksekliği en derin yaprak düğüme kenarların sayısıdır (yani bir yaprak düğümden düğüme uzun yol).
Bir ağaç yüksekliği => bir ağaç yüksekliği kök düğümü ya da en derin düğümün derinliği yüksekliğidir.
Bir düğüm derinliği => bir düğüm derinliği düğümüne kökünden kenarların sayısıdır.
Ağaca derinliği => Bir Ağacı Derinliği en uzun yoldaki bir yaprak düğüme kök düğümden kenarlarının toplam sayısıdır.
Grafikler
Bir grafik, sınırlı sayıda düğüm ve kenardan oluşan ortak bir veri yapısıdır. Bir grafik daha çok bir ağ gibi görülebilir. Birbirine bağlı nesneler, köşeler olarak bilinen noktalarla temsil edilir ve köşeleri birbirine bağlayan bağlantılara kenarlar denir. Bir köşe, bağlantılı liste düğümlerine benzerdir ve bir kenar (x, y) çifti, x köşesinin y köşesine bağlandığı anlamına gelir. Grafikler, bir bitişik matris veya bitişiklik listesi kullanılarak gösterilebilir.
Grafikler, birçok gerçek dünya problemi için nihai soyutlamadır. Grafik Veri Yapıları için en iyi kullanım örneklerinden bazıları Sosyal Grafik API’leri (LinkedIn, Facebook, vb.), Yol Optimizasyon Algoritmaları (Google haritaları gibi), Web Analitiği ve Bilimsel Hesaplamaları içerir.
İki yaygın grafik türü vardır:
Yönlendirilmemiş Grafikler => Yönlendirilmemiş bir grafikte, kenarlar kendileriyle olan yönlerle ilişkilendirilmez. Bir kenar köşe arasında varsa bu şu anlama gelir, X ve Y daha sonra köşe arasından geçtiği edilebilir Y için X hem de X için Y.
Yönlendirilmiş Grafikler => Yönlendirilmiş bir grafikte, kenarlar onlarla birlikte yönlerle ilişkilendirilir. Bir kenar köşe arasında varsa Bu şu anlama gelir, X ve Y daha sonra köşe arasından geçtiği edilebilir X için Y , sadece. Burada, köşe A başlangıç
Temel Terminoloji
- Yol => Yol, iki köşe arasındaki bir dizi kenarları temsil eder.
- Basit Yol => Basit bir yol, grafiğin tüm düğümlerinin 0 = V N istisnası ile farklı olduğu bir yoldur.
- Kapalı Yol => Basit bir yol, ilk düğümün bir terminal düğümü ile aynı olduğu bir yoldur.
- Döngü => Döngü, ilk ve son köşeler dışında yinelenen kenarları veya köşeleri olmayan yol olarak tanımlanabilir.
- Tam Grafik => Her köşenin doğrudan diğer tüm köşelere bağlı olduğu bir grafik.
- Bağlı Grafik => Bağlı bir grafiğin her köşe çifti arasında bir yolu vardır
- Ağırlıklı Grafik => Ağırlıklı grafik, grafikteki her kenar ile bir değeri (ağırlık) ilişkilendirir.
- Döngü => Benzer uç noktalar ile ilişkili bir kenara Döngü adı verilebilir.
- Derece => Bir grafikteki tepe noktasının derecesi, kendisine düşen toplam kenar sayısıdır.
- Bitişik Düğümler (köşeler) => Aynı kenar yoluyla bağlanırlarsa iki köşe bitişik olarak adlandırılır.
Hash Tabloları
Hash Table (hash, hash map olarak da adlandırılır), hashing kullanarak verileri ilişkisel bir şekilde depolayan bir veri yapısıdır. Hashing, bir hash fonksiyonu kullanarak anahtarları, değerleri hash tablosuna eşleme tekniğidir. Burada ” anahtar ” aranan bir dizedir ve ” değer ” bu anahtarla eşleştirilmiş veridir. İyi bir karma işlevi kullanarak, karma oluşturma iyi çalışabilir. Karma tablosunda, veri boyutuna bakılmaksızın ekleme ve arama işlemleri çok hızlıdır. Karma tablolar diziler kullanılarak oluşturulur.
Hash tablosunun gerçek hayattan örnekleri:
- Okullarda / üniversitelerde, her öğrenciye, kendileri hakkında bilgi almak için kullanılabilecek benzersiz bir kayıt numarası atanır.
- Kütüphanelerde, her kitaba, kitapla ilgili bilgileri belirlemek için kullanılabilecek benzersiz bir numara atanır.
Temel işlemler
Ekle: Karma tablosuna bir öğe ekler.
Sil: Karma tablodan bir öğeyi siler.
Ara: Karma tablodaki bir öğeyi arar.