Back to Javascript Algorithms

JavaScript Algoritmalar ve Veri Yapıları

README.tr-TR.md

latest21.9 KB
Original Source

JavaScript Algoritmalar ve Veri Yapıları

Bu repository popüler algoritmaların ve veri yapılarının birçoğunun Javascript tabanlı örneklerini bulundurur.

Her bir algoritma ve veri yapısı kendine ait açıklama ve videoya sahip README dosyası içerir.

Read this in other languages: 简体中文, 繁體中文, 한국어, 日本語, Polski, Français, Español, Português, Русский, Italiana, Bahasa Indonesia, Українська, Arabic, Tiếng Việt, Deutsch, Uzbek עברית

Veri Yapıları

Bir veri yapısı, verileri bir bilgisayarda organize etmenin ve depolamanın belirli bir yoludur, böylece verimli bir şekilde erişilebilir ve değiştirilebilir. Daha iyi ifadeyle, bir veri yapısı bir veri koleksiyonudur, aralarındaki ilişkiler, ve işlevler veya işlemler veriye uygulanabilir.

B - Başlangıç, A - İleri Seviye

Algoritmalar

Bir algoritma, bir problem sınıfının nasıl çözüleceğine dair kesin bir tanımlamadır. Bir işlem dizisini açık olarak tanımlayan kurallar dizisidir.

B - Başlangıç, A - İleri Seviye

Konusuna göre Algoritma

Algoritmik Paradigma

Algoritmik paradigma, bir sınıfın tasarımının altında yatan genel bir yöntem veya yaklaşımdır. Algoritma dizayn tekniği olarak düşünülebilir. Her bir altproblemi (subproblem) asıl problemle benzerlik gösteren problemlere uygulanabilir.

Repository'in Kullanımı

Bütün dependencyleri kurun

npm install

ESLint'i başlatın

Bunu kodun kalitesini kontrol etmek amacı ile çalıştırabilirsin.

npm run lint

Bütün testleri çalıştır

npm test

Testleri ismine göre çalıştır

npm test -- 'LinkedList'

Deneme Alanı

data-structures ve algorithms içerisinde ./src/playground/playground.js yazarak ./src/playground/__test__/playground.test.js için test edebilirsin.

Ardından basitçe alttaki komutu girerek kodunun beklendiği gibi çalışıp çalışmadığını test edebilirsin:

npm test -- 'playground'

Yararlı Bilgiler

Referanslar

▶ Data Structures and Algorithms on YouTube

Big O Notation

  • Big O notation *, algoritmaları, girdi boyutu büyüdükçe çalışma süresi veya alan gereksinimlerinin nasıl arttığına göre sınıflandırmak için kullanılır. Aşağıdaki grafikte, Big O gösteriminde belirtilen algoritmaların en yaygın büyüme sıralarını bulabilirsiniz.

Kaynak: Big O Cheat Sheet.

Altta Big O notations ve farklı input boyutlarına karşın yapılmış performans karşılaştırması listelenmektedir.

Big O Notation10 Element için hesaplama100 Element için hesaplama1000 Element için hesaplama
O(1)111
O(log N)369
O(N)101001000
O(N log N)306009000
O(N^2)100100001000000
O(2^N)10241.26e+291.07e+301
O(N!)36288009.3e+1574.02e+2567

Veri Yapısı İşlem Karmaşıklığı

Veri YapısıAccessSearchInsertionDeletionComments
Dizi1nnn
Yığınnn11
Sıralınn11
Bağlantılı Listenn1n
Yığın Tablo-nnnKusursuz hash fonksiyonu durumunda sonuç O(1)
İkili Arama AğacınnnnIn case of balanced tree costs would be O(log(n))
B-Treelog(n)log(n)log(n)log(n)
Red-Black Treelog(n)log(n)log(n)log(n)
AVL Treelog(n)log(n)log(n)log(n)
Bloom Filter-11-Arama esnasında yanlış sonuçlar çıkabilir

Dizi Sıralama Algoritmaları Karmaşıklığı

İsimEn İyiOrtalamaEn KötüHafızaKararlıYorumlar
Bubble sortnn<sup>2</sup>n<sup>2</sup>1Evet
Insertion sortnn<sup>2</sup>n<sup>2</sup>1Evet
Selection sortn<sup>2</sup>n<sup>2</sup>n<sup>2</sup>1Hayır
Heap sortn log(n)n log(n)n log(n)1Hayır
Merge sortn log(n)n log(n)n log(n)nEvet
Quick sortn log(n)n log(n)n<sup>2</sup>log(n)HayırHızlı sıralama genellikle O(log(n)) yığın alanıyla yapılır
Shell sortn log(n)depends on gap sequencen (log(n))<sup>2</sup>1Hayır
Counting sortn + rn + rn + rn + rEvetr - dizideki en büyük sayı
Radix sortn * kn * kn * kn + kEvetk - en uzun key'in uzunluğu

Projeyi Destekleme

Bu projeyi buradan destekleyebilirsiniz ❤️️ GitHub veya ❤️️ Patreon.

ℹ️ A few more projects and articles about JavaScript and algorithms on trekhleb.dev