Algoritma Kütüphanesi
Tüm algoritma kategorilerini keşfedin, interaktif görselleştirmeler ve detaylı açıklamalarla algoritmaların nasıl çalıştığını öğrenin.
Algoritma Seçimi Rehberi
İhtiyacınıza uygun algoritma seçmek, sorununuzun verimli çözümü için kritik öneme sahiptir. İşte algoritma seçerken göz önünde bulundurmanız gereken bazı faktörler:
- Problem Tipi: Sıralama, arama, optimizasyon gibi temel problem tipiniz nedir?
- Veri Boyutu: Çok büyük veri kümeleri için asimptotik karmaşıklığı daha düşük algoritmalar tercih edilmelidir.
- Zaman ve Alan Kısıtlamaları: Hızlı çalışma mı yoksa düşük bellek kullanımı mı daha önemli?
- İşlem Tipi: Dinamik veri mi yoksa statik veri mi işlenecek?
- Uygulama Ortamı: Algoritmanın çalışacağı platform veya sistem özellikleri.
Bu platformda sunulan algoritmalar, çeşitli problem türlerine yönelik çözümleri ve bunların uygulanma şekillerini göstermektedir. Her algoritmanın avantajları, dezavantajları ve karmaşıklık analizleri detaylı olarak incelenmiştir.
Sıralama Algoritmaları
Verileri belirli bir düzende sıralamak için kullanılan algoritmalar
İçerdiği Algoritmalar:
- Bubble Sort
- Selection Sort
- Insertion Sort
- +2 daha...
Arama Algoritmaları
Veri yapılarında eleman bulmak için kullanılan algoritmalar
İçerdiği Algoritmalar:
- Linear Search
- Binary Search
Graf Algoritmaları
Graf veri yapıları üzerinde işlem yapan algoritmalar
İçerdiği Algoritmalar:
- Breadth-First Search (BFS)
- Depth-First Search (DFS)
- Dijkstra's Algorithm
- +1 daha...
Veri Yapıları
Verileri organize etme ve saklama yöntemleri
İçerdiği Algoritmalar:
- Linked List
- Stack
- Queue
- +2 daha...
Dinamik Programlama
Karmaşık problemleri alt problemlere bölerek çözen yöntemler
İçerdiği Algoritmalar:
- Fibonacci
- Knapsack Problem
- Longest Common Subsequence
Geri İzleme Algoritmaları
Bir problem için olası tüm çözümleri adım adım keşfeden ve geçersiz çözüm yollarını eleme yöntemiyle ilerleyen bir algoritma stratejisi
İçerdiği Algoritmalar:
- N-Queens Problem
- Subset Sum Problem
Açgözlü Algoritmalar
Her adımda en iyi görünen seçimi yaparak global optimum çözüm arayan problem çözme yaklaşımı
İçerdiği Algoritmalar:
- Fractional Knapsack
- Huffman Coding
Böl ve Fethet Algoritmaları
Problemi aynı tipte daha küçük alt problemlere bölen, çözen ve sonuçları birleştiren algoritma tasarım yaklaşımı
İçerdiği Algoritmalar:
- Merge Sort
- Quick Sort
- Binary Search
Metin İşleme Algoritmaları
String veriler üzerinde arama, eşleştirme, düzenleme ve manipülasyon yapmak için kullanılan özel algoritmalar
İçerdiği Algoritmalar:
- Rabin-Karp Algorithm
- KMP Algorithm
Matematiksel Algoritmalar
Matematiksel problemleri çözmek ve matematiksel hesaplamalar yapmak için kullanılan algoritmalar
İçerdiği Algoritmalar:
- GCD (Euclidean Algorithm)
- Sieve of Eratosthenes
Kümeleme Algoritmaları
Benzer özelliklere sahip verileri gruplandırmak için kullanılan gözetimsiz öğrenme yöntemleri
İçerdiği Algoritmalar:
- K-Means
- Hierarchical Clustering
Optimizasyon Algoritmaları
Belirli bir problem için olası çözümler arasından en iyi çözümü bulmayı amaçlayan algoritmalar
İçerdiği Algoritmalar:
- Simulated Annealing
- Genetic Algorithms
Diğer Önemli Algoritmalar
Çeşitli problem alanlarında kullanılan, farklı kategorilere tam olarak sığmayan ancak yazılım geliştirmede kritik önem taşıyan algoritmalar
İçerdiği Algoritmalar:
- Bloom Filter
- Reservoir Sampling
İleri Seviye Algoritmalar
Karmaşık problemleri çözmek için optimize edilmiş, özel durumlara yönelik geliştirilmiş algoritmalar
İçerdiği Algoritmalar:
- Floyd's Cycle-Finding
- Topological Sort
Tüm Algoritmalar
Sıralama Algoritmaları
Bubble Sort
Her adımda komşu elemanları karşılaştırarak ve gerekirse değiştirerek çalışan basit bir sıralama algoritması.
Selection Sort
Her adımda dizideki en küçük elemanı bulup uygun konuma yerleştiren algoritma.
Insertion Sort
Elemanları teker teker alıp sıralı alt listeye uygun konuma yerleştiren algoritma.
Merge Sort
Böl ve fethet yaklaşımını kullanarak diziyi parçalara ayırıp sıralayarak birleştiren algorima.
Quick Sort
Pivot eleman seçerek diziyi bölen ve alt dizileri sıralayan hızlı bir algoritma.
Arama Algoritmaları
Linear Search
Bir dizide elemanları sırayla kontrol ederek arama yapan en basit algoritma.
Binary Search
Sıralı dizilerde, her adımda arama alanını yarıya bölerek logaritmik zamanda arama yapan algoritma.
Graf Algoritmaları
Breadth-First Search (BFS)
Grafı seviye seviye dolaşan, en kısa yolu bulma ve seviye tabanlı işlemlerde kullanılan algortima.
Depth-First Search (DFS)
Grafı derinlemesine dolaşan, bağlantılı bileşenler ve çevrim tespitinde kullanılan algoritma.
Dijkstra's Algorithm
Bir düğümden diğer tüm düğümlere olan en kısa yolları bulan, ağırlıklı graflarda kullanılan algoritma.
Bellman-Ford Algorithm
Negatif ağırlıklı kenarları olan graflarda en kısa yolları bulan ve negatif çevrimleri tespit eden algoritma.
Veri Yapıları
Linked List
Her düğümün veri ve bir sonraki düğüme referans içerdiği dinamik bir veri yapısı.
Stack
Son giren ilk çıkar (LIFO) prensibiyle çalışan, yalnızca en üstteki elemana erişim sağlayan veri yapısı.
Queue
İlk giren ilk çıkar (FIFO) prensibiyle çalışan, elemanları sırayla işleyen veri yapısı.
Binary Search Tree
Her düğümün en fazla iki çocuğa sahip olduğu, hızlı arama, ekleme ve silme işlemlerine olanak tanıyan hiyerarşik yapı.
Hash Table
Anahtarları değerlere eşleyen, sabit zamanlı erişim sağlayan veri yapısı.
Dinamik Programlama
Fibonacci
Her sayının kendinden önceki iki sayının toplamı olduğu, memoization ile verimli hesaplanabilen dizi.
Knapsack Problem
Belirli bir ağırlık kapasitesindeki çantaya, maksimum değere sahip nesneleri yerleştirme problemi.
Longest Common Subsequence
İki dizi arasındaki en uzun ortak alt diziyi bulan algoritma.
Geri İzleme Algoritmaları
N-Queens Problem
N adet veziri, birbirlerini tehdit etmeyecek şekilde N×N boyutundaki satranç tahtasına yerleştirme problemi.
Subset Sum Problem
Bir dizi içerisindeki sayıların alt kümelerinin toplamının belirli bir değere eşit olup olmadığını bulan algoritma.
Açgözlü Algoritmalar
Fractional Knapsack
Nesneleri ağırlık/değer oranına göre sıralayarak çantaya yerleştiren, nesnelerin bölünebilir olduğu çanta problemi çözümü.
Huffman Coding
Karakterlerin frekanslarına göre değişken uzunluklu kodlar atayan, veri sıkıştırma için kullanılan algoritma.
Böl ve Fethet Algoritmaları
Merge Sort
Diziyi iki parçaya bölen, her parçayı sıralayan ve sonra birleştiren etkili bir sıralama algoritması.
Quick Sort
Pivot seçerek diziyi bölen ve her bölümü tekrar eden şekilde sıralayan hızlı sıralama algoritması.
Binary Search
Sıralı dizilerde, her adımda arama alanını yarıya indirerek logaritmik zamanda arama yapan algoritma.
Metin İşleme Algoritmaları
Rabin-Karp Algorithm
Metin içerisinde desen aramak için hash değerlerini kullanan string eşleştirme algoritması.
KMP Algorithm
Önek tablosu kullanarak metinde desen aramayı verimli hale getiren string eşleştirme algoritması.
Matematiksel Algoritmalar
GCD (Euclidean Algorithm)
İki veya daha fazla sayının en büyük ortak bölenini bulan etkili bir algoritma.
Sieve of Eratosthenes
Belirli bir sayıya kadar olan tüm asal sayıları hızlı bir şekilde bulan algoritma.
Kümeleme Algoritmaları
K-Means
Verileri K adet kümeye ayıran, her kümenin merkezi etrafında gruplandıran popüler bir kümeleme algoritması.
Hierarchical Clustering
Verileri hiyerarşik bir ağaç yapısında gruplayan, farklı seviyelerde kümeleme imkanı sunan algoritma.
Optimizasyon Algoritmaları
Simulated Annealing
Fiziksel tavlama işlemini taklit eden, global optimum çözüm arayan bir metasezgisel yöntem.
Genetic Algorithms
Doğal evrim süreçlerini taklit eden, popülasyon tabanlı meta-sezgisel optimizasyon algoritması.
Diğer Önemli Algoritmalar
Bloom Filter
Bir elemanın bir kümede bulunup bulunmadığını hızlı şekilde kontrol eden, olasılıksal veri yapısı.
Reservoir Sampling
Bilinmeyen boyuttaki veri akışından rastgele örneklem almaya yarayan algoritma.
İleri Seviye Algoritmalar
Floyd's Cycle-Finding
Bağlı listelerde döngüleri bulmak için kullanılan verimli bir algoritma. 'Tortoise and Hare' olarak da bilinir.
Topological Sort
Yönlü asiklik graflarda (DAG) düğümleri bağımlılıklarına göre sıralayan algoritma.