同步操作将从 Gitee 极速下载/javascript-algorithms 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Bu repository JavaScript'e ait popüler algoritma ve veri yapılarını içermektedir.
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
☝ Not, bu proje araştırma ve öğrenme amacı ile yapılmış olup üretim için yaplılmamıştır.
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 doğrusu, 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
B
Bağlantılı Veri Yapısı
B
Çift Yönlü Bağlı Liste
B
Kuyruk
B
Yığın
B
Hash Table
B
Heap - max and min heap versionsB
Öncelikli Kuyruk
A
Trie
A
Ağaç
A
İkili Arama Ağaçları
A
AVL Tree
A
Red-Black Tree
A
Segment Tree - with min/max/sum range queries examplesA
Fenwick Tree (Binary Indexed Tree)A
Graph (both directed and undirected)A
Disjoint Set
A
Bloom Filter
Bir algoritma, bir problem sınıfının nasıl çözüleceğine dair kesin bir tanımlamadır. Bu bir işlem dizisini kesin olarak tanımlayan bir dizi kural.
B
- Başlangıç, A
- İleri Seviye
B
Bit Manipülasyonu - set/get/update/clear bits, multiplication/division by two, make negative etc.B
Faktöriyel
B
Fibonacci Sayısı - klasik ve kapalı-form versiyonlarıB
Asallık Testi (trial division method)B
Öklid Algoritması - En büyük ortak bölen hesaplama (EBOB)B
En küçük Ortak Kat (EKOK)B
Sieve of Eratosthenes - belirli bir sayıya kadarki asal sayıları bulmaB
Is Power of Two - sayı ikinin katı mı sorgusu (naive ve bitwise algoritmaları)B
Paskal Üçgeni
B
Karmaşık Sayılar - karmaşık sayılar ve bunlarla temel işlemlerB
Radyan & Derece - radyandan dereceye çeviri ve tersiB
Fast Powering
A
Tamsayı Bölümü
A
Karekök - Newton yöntemiA
Liu Hui π Algoritması - N-gons'a göre yaklaşık π hesabıA
Ayrık Fourier Dönüşümü - bir zaman fonksiyonunu (bir sinyal) onu oluşturan frekanslara ayırırB
Kartezyen Ürün - product of multiple setsB
Fisher–Yates Shuffle - sonlu bir dizinin rastgele permütasyonuA
Power Set - all subsets of a set (bitwise and backtracking solutions)A
Permütasyonlar(tekrarlı ve tekrarsız)A
Kombinasyonlar (tekrarlı ve tekrarsız)A
En Uzun Ortak Altdizi (LCS)A
En Uzun Artan Altdizi
A
En Kısa Ortak Üst Sıra (SCS)A
Knapsack Problem - "0/1" and "Unbound" onesA
Maksimum Altdizi - "Brute Force" ve "Dinamik Programlara" (Kadane'nin) versiyonuA
Kombinasyon Toplamı - belirli toplamı oluşturan tüm kombinasyonları bulunB
Hamming Mesafesi - sembollerin farklı olduğu konumların sayısıA
Levenshtein Mesafesi - iki sekans arasındaki minimum düzenleme mesafesiA
Knuth–Morris–Pratt Algoritması (KMP Algorithm) - substring search (pattern matching)A
Z Algoritması - altmetin araması (desen eşleştirme)A
Rabin Karp Algoritması - altmetin aramasıA
En Uzun Ortak Alt Metin
A
Regular Expression Eşleme
B
Doğrusal Arama
B
Jump Search (ya da Block Search) - sıralı dizide araB
İkili Arama - sıralı dizide araB
Interpolation Search - tekdüze dağıtılmış sıralı dizide aramaB
Bubble Sort
B
Selection Sort
B
Insertion Sort
B
Heap Sort
B
Merge Sort
B
Quicksort - in-place and non-in-place implementationsB
Shellsort
B
Counting Sort
B
Radix Sort
B
Depth-First Search (DFS)B
Breadth-First Search (BFS)B
Depth-First Search (DFS)B
Breadth-First Search (BFS)B
Kruskal’s Algorithm - ağırlıklı yönlendirilmemiş grafik için Minimum Yayılma Ağacı'nı (MST) bulmaA
Dijkstra Algorithm - tek tepe noktasından tüm grafik köşelerine en kısa yolları bulmakA
Bellman-Ford Algorithm - tek tepe noktasından tüm grafik köşelerine en kısa yolları bulmakA
Floyd-Warshall Algorithm - tüm köşe çiftleri arasındaki en kısa yolları bulunA
Detect Cycle - hem yönlendirilmiş hem de yönlendirilmemiş grafikler için (DFS ve Ayrık Küme tabanlı sürümler)A
Prim’s Algorithm - ağırlıklı yönlendirilmemiş grafik için Minimum Yayılma Ağacı'nı (MST) bulmaA
Topological Sorting - DFS metoduA
Articulation Points - Tarjan's algoritması (DFS based)A
Bridges - DFS yöntemi ile algoritmaA
Eulerian Path and Eulerian Circuit - Fleury'nin algoritması - Her kenara tam olarak bir kez ulaşA
Hamiltonian Cycle - Her köşeyi tam olarak bir kez ziyaret etA
Strongly Connected Components - Kosaraju's algorithmA
Travelling Salesman Problem - her şehri ziyaret eden ve başlangıç şehrine geri dönen mümkün olan en kısa rotaB
Polynomial Hash - polinom temelinde dönen hash işleviB
Caesar Cipher - simple substitution cipherB
NanoNeuron - 7 simple JS functions that illustrate how machines can actually learn (forward/backward propagation)B
Tower of Hanoi
B
Square Matrix Rotation - in-place algorithmB
Jump Game - backtracking, dynamic programming (top-down + bottom-up) and greedy examplesB
Unique Paths - backtracking, dynamic programming and Pascal's Triangle based examplesB
Rain Terraces - trapping rain water problem (dynamic programming and brute force versions)B
Recursive Staircase - tepeye ulaşmanın yollarını sayma (4 çözüm)A
N-Queens Problem
A
Knight's Tour
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.
B
Doğrusal Arama
B
Rain Terraces - trapping rain water problemB
Recursive Staircase - tepeye çıkmanın yollarını hesaplaA
Maximum Subarray
A
Travelling Salesman Problem - her şehri ziyaret eden ve başlangıç şehrine geri dönen mümkün olan en kısa rotaA
Discrete Fourier Transform - bir zaman fonksiyonunu (bir sinyal) onu oluşturan frekanslara ayırırB
Jump Game
A
Unbound Knapsack Problem
A
Dijkstra Algorithm - tüm grafik köşelerine giden en kısa yolu bulmakA
Prim’s Algorithm - ağırlıklı yönlendirilmemiş grafik için Minimum Yayılma Ağacı'nı (MST) bulmaA
Kruskal’s Algorithm - ağırlıklı yönlendirilmemiş grafik için Minimum Yayılma Ağacı'nı (MST) bulmaB
Binary Search
B
Tower of Hanoi
B
Pascal's Triangle
B
Euclidean Algorithm - calculate the Greatest Common Divisor (GCD)B
Merge Sort
B
Quicksort
B
Tree Depth-First Search (DFS)B
Graph Depth-First Search (DFS)B
Jump Game
B
Fast Powering
A
Permutations (tekrarlı ve tekrarsız)A
Combinations (tekrarlı ve tekrarsız)B
Fibonacci Sayısı
B
Jump Game
B
Eşsiz Yol
B
Rain Terraces - trapping rain water problemB
Recursive Staircase - zirveye ulaşmanın yollarının sayısını sayınA
Levenshtein Distance - iki sekans arasındaki minimum düzenleme mesafesiA
Longest Common Subsequence (LCS)A
Longest Common Substring
A
Longest Increasing Subsequence
A
Shortest Common Supersequence
A
0/1 Knapsack Problem
A
Integer Partition
A
Maximum Subarray
A
Bellman-Ford Algorithm - tüm grafik köşelerine giden en kısa yolu bulmakA
Floyd-Warshall Algorithm - tüm köşe çiftleri arasındaki en kısa yolları bulunA
Regular Expression Matching
B
Jump Game
B
Unique Paths
B
Power Set - all subsets of a setA
Hamiltonian Cycle - Her köşeyi tam olarak bir kez ziyaret edinA
N-Queens Problem
A
Knight's Tour
A
Combination Sum - belirli toplamı oluşturan tüm kombinasyonları bulunBü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'
▶ Data Structures and Algorithms on YouTube
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 Notation | 10 Element için hesaplama | 100 Element için hesaplama | 1000 Element için hesaplama |
---|---|---|---|
O(1) | 1 | 1 | 1 |
O(log N) | 3 | 6 | 9 |
O(N) | 10 | 100 | 1000 |
O(N log N) | 30 | 600 | 9000 |
O(N^2) | 100 | 10000 | 1000000 |
O(2^N) | 1024 | 1.26e+29 | 1.07e+301 |
O(N!) | 3628800 | 9.3e+157 | 4.02e+2567 |
Veri Yapısı | Access | Search | Insertion | Deletion | Comments |
---|---|---|---|---|---|
Dizi | 1 | n | n | n | |
Yığın | n | n | 1 | 1 | |
Sıralı | n | n | 1 | 1 | |
Bağlantılı Liste | n | n | 1 | n | |
Yığın Tablo | - | n | n | n | Kusursuz hash fonksiyonu durumunda sonuç O(1) |
İkili Arama Ağacı | n | n | n | n | In case of balanced tree costs would be O(log(n)) |
B-Tree | log(n) | log(n) | log(n) | log(n) | |
Red-Black Tree | log(n) | log(n) | log(n) | log(n) | |
AVL Tree | log(n) | log(n) | log(n) | log(n) | |
Bloom Filter | - | 1 | 1 | - | Arama esnasında yanlış sonuçlar çıkabilir |
İsim | En İyi | Ortalama | En Kötü | Hafıza | Kararlı | Yorumlar |
---|---|---|---|---|---|---|
Bubble sort | n | n2 | n2 | 1 | Evet | |
Insertion sort | n | n2 | n2 | 1 | Evet | |
Selection sort | n2 | n2 | n2 | 1 | Hayır | |
Heap sort | n log(n) | n log(n) | n log(n) | 1 | Hayır | |
Merge sort | n log(n) | n log(n) | n log(n) | n | Evet | |
Quick sort | n log(n) | n log(n) | n2 | log(n) | Hayır | Hızlı sıralama genellikle O(log(n)) yığın alanıyla yapılır |
Shell sort | n log(n) | depends on gap sequence | n (log(n))2 | 1 | Hayır | |
Counting sort | n + r | n + r | n + r | n + r | Evet | r - dizideki en büyük sayı |
Radix sort | n * k | n * k | n * k | n + k | Evet | k - en uzun key'in uzunluğu |
Bu projeyi buradan destekleyebilirsiniz ❤️️ GitHub veya ❤️️ Patreon.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。