Algoritma Nedir?
Algoritma, belirli bir problemi çözmek veya belirli bir görevi yerine getirmek için izlenen adım adım talimatlar dizisidir. Günlük hayattaki bir yemek tarifi gibi, her algoritma belirli girdiler alır, bunları işler ve bir sonuç üretir. Yazılım geliştirmede algoritmalar, programların temel yapı taşlarıdır ve verimli çözümler üretmenin anahtarıdır.
Veri Yapıları Nedir?
Veri yapıları, verilerin bellekte organize edilme ve saklanma biçimleridir. Doğru veri yapısını seçmek, algoritmanın performansını doğrudan etkiler. Her veri yapısının güçlü ve zayıf yönleri vardır; problem türüne göre en uygun olanı seçilmelidir.
Temel Veri Yapıları
Dizi (Array)
Aynı türdeki elemanların ardışık bellek konumlarında saklandığı yapıdır. İndeks ile erişim O(1) sürede gerçekleşir, ancak ekleme ve silme işlemleri maliyetli olabilir.
Bağlı Liste (Linked List)
Elemanların düğümler halinde saklandığı, her düğümün bir sonraki düğümün adresini tuttuğu yapıdır. Ekleme ve silme işlemleri O(1) sürede yapılabilir, ancak rastgele erişim mümkün değildir.
Yığın (Stack)
Son giren ilk çıkar (LIFO) prensibine göre çalışır. Push (ekleme) ve pop (çıkarma) işlemleri O(1) sürede gerçekleşir. Fonksiyon çağrıları, geri alma (undo) işlemleri ve parantez eşleştirmede kullanılır.
Kuyruk (Queue)
İlk giren ilk çıkar (FIFO) prensibine göre çalışır. Görev zamanlama, yazdırma kuyruğu ve genişlik öncelikli arama (BFS) algoritmasında kullanılır.
| Veri Yapısı | Erişim | Arama | Ekleme | Silme |
|---|---|---|---|---|
| Dizi | O(1) | O(n) | O(n) | O(n) |
| Bağlı Liste | O(n) | O(n) | O(1) | O(1) |
| Yığın | O(n) | O(n) | O(1) | O(1) |
| Kuyruk | O(n) | O(n) | O(1) | O(1) |
| Hash Tablosu | - | O(1) | O(1) | O(1) |
| İkili Arama Ağacı | O(log n) | O(log n) | O(log n) | O(log n) |
İleri Düzey Veri Yapıları
Hash Tablosu (Hash Table)
Anahtar-değer çiftlerini saklayan yapıdır. Hash fonksiyonu ile anahtarı bir indekse dönüştürür. Ortalama durumda arama, ekleme ve silme O(1) sürede gerçekleşir.
Ağaç (Tree)
Hiyerarşik veri yapısıdır. İkili arama ağacı, AVL ağacı ve kırmızı-siyah ağaç gibi çeşitleri bulunur. Sıralı veri saklama ve hızlı arama işlemleri için idealdir.
Graf (Graph)
Düğümler ve kenarlardan oluşan yapıdır. Sosyal ağlar, yol bulma ve ağ topolojisi gibi gerçek dünya problemlerini modellemek için kullanılır.
Temel Algoritmalar
Sıralama Algoritmaları
- Bubble Sort: Basit ama verimsiz, O(n²) karmaşıklığında
- Merge Sort: Böl ve yönet yaklaşımı, O(n log n) karmaşıklığında
- Quick Sort: Pratikte en hızlı, ortalama O(n log n) karmaşıklığında
- Insertion Sort: Küçük veri kümeleri için etkili
Arama Algoritmaları
- Doğrusal Arama: Sırasız verilerde O(n) sürede arama
- İkili Arama: Sıralı verilerde O(log n) sürede arama
- BFS (Genişlik Öncelikli Arama): Graf üzerinde katman katman arama
- DFS (Derinlik Öncelikli Arama): Graf üzerinde derinlemesine arama
Big O Notasyonu
Big O notasyonu, algoritmanın performansını girdi boyutuna göre ifade eder. En yaygın karmaşıklık sınıfları:
- O(1): Sabit zaman, girdi boyutundan bağımsız
- O(log n): Logaritmik, ikili arama gibi
- O(n): Doğrusal, tek geçişli işlemler
- O(n log n): Log-doğrusal, verimli sıralama algoritmaları
- O(n²): Karesel, iç içe döngüler
- O(2ⁿ): Üstel, brute force yaklaşımları
Sonuç
Algoritma ve veri yapıları, her yazılım geliştiricinin temel bilgi alanıdır. Ekolsoft olarak yazılım projelerimizde doğru veri yapısı ve algoritma seçiminin performans üzerindeki etkisini yakından biliyoruz. Bu kavramları öğrenmek, hem teknik mülakatlardan geçmenize hem de gerçek dünya problemlerine verimli çözümler üretmenize yardımcı olacaktır.