Veri yapısı bir kabus mu? Röportajı geçmek için ustalaşmalısınız

Tam metin 1897 Kelimeler, tahmini öğrenme süresi 6 dakika

Kaynak: unsplash

Tıpkı bir rüya gibi uyandığımda hala çok üzücü ve veri yapısı tarafından işkence görmenin acısını unutmak zor. Veri yapıları ve algoritmalardan oluşan bir ders kitabını açtığınızda, her zaman göz korkutucu olan karmaşık matematikle doludur. Bu konuyu sevmeyenler için bu bir kabus.

Ancak gerçek şu ki, programlama görüşmesini geçmek istiyorsanız, veri yapısından ayrılmaz olan algoritmayı çözmeniz gerekir. Korkmayın, veri yapısını anladıktan sonra, göründükleri kadar zor olmadıklarını göreceksiniz.

Bu makale, veri yapısını anlamanıza yardımcı olmak için bu en temel veri yapılarını basitleştirecek ve özetleyecektir.

Veri yapısı nedir?

Veri yapısı, verimli kullanım için bir bilgisayardaki verileri düzenlemenin özel bir yoludur:

"Bilgisayar biliminde, bir veri yapısı, verimli erişim ve değiştirmeye izin veren veri organizasyonu, yönetimi ve depolaması için bir formattır. Daha kesin olmak gerekirse, bir veri yapısı bir veri değeri, veri değerleri arasındaki ilişki ve Veriler üzerindeki işlevler veya işlemler koleksiyonu. "

Verileri belirli bir veri yapısında saklamalıyız ve doğru veri yapısını seçmek çok önemlidir.

Kaynak: unsplash

İyi veya kötü veri yapısı olmadığına ve her veri yapısının avantaj ve dezavantajlarına sahip olduğuna dikkat etmek önemlidir. Bir veri yapısını ölçmenin birçok yolu vardır.Bunlara, operasyonların ölçeklenebilirliğinin bir göstergesi olan büyük O sembolleri de denir.

Şimdi farklı veri yapı türlerini tartışalım.

Bağlantılı liste

Bağlantılı listenin birimi bir "düğüm" olarak adlandırılır, bir düğüm bir değer ve bir işaretçi (İşaretçi) içerir. Değer, 12 gibi yalnızca bir sayıdır ve işaretçi, değeri zincirdeki bir sonraki düğüme bağlar. Bu, bağlantılı listenin bağlantı kısmıdır.Bağlantılı listedeki ilk düğüme baş, işaretçisiz son düğüme de kuyruk adı verilir.

Avantajlar: Düğüm eklemek ve silmek çok kullanışlıdır, sadece işaretçinin gösterdiği adresi değiştirmeniz yeterlidir.

Dezavantajlar: İndeksleme veya arama işlevlerine sahip olmasına rağmen düğümleri almakta iyi değil. Çünkü her bir düğüm yalnızca komşu düğümlerin bilgilerini bilir.

Karma tablo (karma tablo)

Karma harita veya karma tablo da önemli bir veri yapısıdır. JavaScript'teki bir nesneye ve Python'daki bir sözlüğe benzer.Bu tür bir veri yapısında, kullanıcı karma tablo için bir kelime veya anahtar sağlar ve tanımı veya değeri alır.

Bir dizi gibi çalışır Anahtar, anahtara karşılık gelen bellek adresini bulan "hash function (hash function)" adı verilen bir işlev aracılığıyla çalışır.

Aradaki fark, bu konumların bellekte bitişik olması gerekmemesi, ancak herhangi bir konumda olabilmesidir. Bu nedenle boyut artışında bir sorun yoktur.

Bununla birlikte, kullanılan karma fonksiyona bağlı olarak farklı bir problem vardır, iki tuş aynı hafıza adresini gösterebilir. Bu sözde "çatışma" dır, bu sorunu çözmenin birçok yolu vardır, ancak bunların tümü işlevde gizlidir.

Avantajlar: Daha önce de belirtildiği gibi, karma işlevi (karma işlevi) ekleme ve okuma için çok uygundur.

Dezavantajlar: Anahtar / değer çatışmalarına neden olabilir.

Yığın ve sıra

Bu iki yapı birbirine çok benzer ve her ikisi de bazı ek işlevlere sahip diziler temelinde oluşturulmuştur.

Yığın, son giren ilk çıkar veri yapısıdır. Bu, istiflenmiş paletlere benzer, üst palet, konulduğunda en son, çıkarıldığında ise ilk palettir.

Yığının tepesine bir öğe eklemeye itme, yığının üstünden bir öğeyi kaldırmaya ise patlama denir. Her dil, çağrı yığını adı verilen bir yöntemle çağrılan işlevlerin kaydını tutar. Yığın, Derinlik İlk Arama (DFS) adlı bir algoritma için çok önemlidir.

Öte yandan kuyruk, tıpkı bir otobüs durağındaki sıra gibi, sıradaki son kişinin otobüse en son bindiği ilk giren ilk çıkar yapısıdır. Sonunda bir eleman ekleme işlemine sıraya koyma, takımın başından bir elemanı çıkarma işlemine dequeuing denir. Kuyruklar, Kapsamlı İlk Arama (BFS) adı verilen önemli bir algoritmada kullanılır.

Avantajlar: Her iki yapı da eleman eklerken ve çıkarırken çok etkilidir.

Dezavantajlar: Diğer veri yapılarıyla karşılaştırıldığında, kullanım durumları sınırlıdır.

Dizi

Bir dizi tüm programlama dillerinde ortaktır ve bilgisayar belleğindeki sürekli bir birimler bloğudur.

Aşağıdaki örnek, 12 öğeli bir tamsayı dizisini temsil eder. Dizinin dizini 0'dan başlar, bu nedenle 12 öğe içeren bir dizinin dizini 0 ile 11 arasındadır.

Kaynak: BeginnersBook

Avantajlar: Diziler öğeleri geri getirmede iyidir, ancak yalnızca dizi küçükse.

Dezavantaj: Dizi boyutu artmaya devam ettikçe, bellekteki diğer öğelerin çalışması gerekir. Bu nedenle, dizinin ekleme işlemi çok verimsizdir, çünkü dizinin uzunluğuna uyum sağlamak için bellekte yeni bir konuma taşınması gerekebilir.

Neyse ki, bu durum JavaScript ve Python gibi üst düzey dillerde ortaya çıkar. Temel dilde ise, dizinin boyutu önceden bildirilmelidir.

Kaynak: unsplash

Grafik ve ağaç

Bilgisayar dilinin "grafik teorisi" olarak adlandırılan özel bir bölümü vardır. Bir grafik, diğer düğümleri işaret eden düğümleri olan bağlantılı bir listeye benzer, ancak bu işaretçiler "kenarlar" olarak adlandırılır ve kenarlar ağırlıklandırılabilir veya sayılar verilebilir.

Verilerin bir yönde genişlediği "ağaç" adı verilen özel bir katman grafiği vardır. "Aile ağacı" gibi birçok şeye atıfta bulunmak veya İnternet'i temsil etmek için kullanılabilirler. Diziler, bağlantılı listeler, yığınlar ve kuyruklar gibi doğrusal veri yapılarının aksine, ağaçlar hiyerarşik veri yapılarıdır.

Avantajlar: Ağaç, verimli ekleme ve arama yetenekleri sağlar ve ağacın veri formatı çok esnektir ve alt ağaçların minimum iş yükü ile taşınmasına izin verir.

Dezavantajlar: Dezavantajı, listeyi değiştirme ve geri alma süresinin O (log n) olmasıdır.

Kaynak: unsplash

Giriş algoritması bu veri yapılarından ayrılamaz, anahtar zorluklardan korkmamaktır. Deneyin, kabuslar tatlı rüyalara dönüşür. Veri yapısını erkenden kavramanızı diliyorum.

Yorum Beğen Takip Et

Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

Bugünün Temel Sesi | Yüksek bir yeri işgal etmek için akıllı arabanın "giriş savaşı" daha yeni başladı
önceki
Sıfır yuan ile başladığımda uygulamayı ücretsiz olarak nasıl çalıştırırım?
Sonraki
Tuzaklara dikkat edin! Java'da 10 yaygın hata
Kod yazmak, roman yazmak gibi mi? Jupyter edebi programlamayı gerçeğe dönüştürüyor
Gelişmeye devam edin! Python projenizi otomasyondan nasıl yararlanabilirsiniz?
Yetkili Tanıma | Jitai Test Merkezi, CNAS tarafından akredite edilmiştir
Birden fazla bloğun yıkılmasını içeren Beiyuan Caddesi'ndeki 100 günlük zorlu projelerin listesi burada
Xinxiang Kuzey Bölgesi havalanmak üzere! Yeni bir hastane ve büyük bir spor ve eğlence vadisi inşa etmek için toplam 846 milyonun üzerinde yatırım planlanıyor
Niu Tail Chong, Paiya Dağı, Jingzhou: İlkel ormanda kalan bir masal dünyası
Chen Youweier "Bin mil, on bin mil yürüyor, Fenghuang'da tünemek istemiyor"
Yongding Bölgesi köylerindeki "En Güzel Bahar Manzarası", bugünkü yumruk ring maçı, Xinqiao Kasabasında
Salgın karşıtı kahramanların ilk hattı | Huang Changyi: kurtarmada "Ying"
Jingzhou: Şakayık çiçekleri "zenginleşiyor"
Teknolojik yenilik de çok ilginç olabilir - Chenzhou Madencilik yeraltı akıllı yükseltme
To Top