Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
11 yazı bulundu #dotnet
Balanced Tree'ler: AVL, Red-Black ve Veritabanı Index'lerinin B-Tree'si
Bilgisayar Bilimi Temelleri SERİ 12

Balanced Tree'ler: AVL, Red-Black ve Veritabanı Index'lerinin B-Tree'si

Balanced tree, insert sırası ne olursa olsun yüksekliği O(log n) tutar: sıralı 10.000 id'de düz BST'nin yüksekliği 10.000, AVL'ninki 14. C# ile AVL insert ve rotation'ları yazıyor, SortedSet'in red-black tree'sine reflection ile bakıyor, PostgreSQL'de pageinspect ile gerçek bir B+tree index'in seviyelerini ve leaf zincirini inceliyoruz.

8 Kas 2026 15 dk 3
Heap ve Priority Queue: C# ile Binary Heap, Heapify, Heap Sort ve Top-K
Bilgisayar Bilimi Temelleri SERİ 13

Heap ve Priority Queue: C# ile Binary Heap, Heapify, Heap Sort ve Top-K

Heap, en küçük elemanı her zaman tepede tutan ve array'de saklanan bir tree'dir; insert ve en küçüğü çıkarma O(log n), bottom-up build-heap O(n). C# ile BinaryHeap ve heap sort yazıyor, .NET PriorityQueue'nun 4-ary yapısını ve eşit öncelikte FIFO vermediğini gerçek çıktıyla gösteriyor, top-K, k-way merge ve running median örneklerini BenchmarkDotNet ölçümüyle tamamlıyoruz.

8 Kas 2026 14 dk 3
Trie: C# ile Autocomplete, Prefix Arama ve Bellek Maliyeti
Bilgisayar Bilimi Temelleri SERİ 14

Trie: C# ile Autocomplete, Prefix Arama ve Bellek Maliyeti

Trie, key'leri karakter karakter saklayıp bir prefix'i O(m) adımda bulur, ama bellek maliyeti yüksektir: 234.456 kelimede sıralı array 11,7 MB, trie 148,9 MB. C# ile trie ve en iyi N öneri yazıyor, Türkçe İ/ı case folding tuzağını çözüyor, minimal API ve Angular arama kutusu kuruyor, sıralı array, PostgreSQL LIKE ve trie'yi ölçümle karşılaştırıyoruz.

8 Kas 2026 14 dk 3
Graph Temelleri: Adjacency List, BFS ve DFS ile Gezinmek
Bilgisayar Bilimi Temelleri SERİ 15

Graph Temelleri: Adjacency List, BFS ve DFS ile Gezinmek

Seyrek graph'lar adjacency list ile tutulur ve BFS en az adımı O(V + E)'de bulur; 5.000 vertex'lik graph'ta adjacency matrix ile BFS 46 kat yavaş. C# ile generic Graph, BFS mesafe ve yol, recursive ve iterative DFS, connected component ve grid flood fill yazıyor; visited'ı queue'dan çıkarırken işaretlemenin 2.000 yerine 2 milyon ekleme yaptığını gerçek çıktıyla gösteriyoruz.

8 Kas 2026 12 dk 3
Topological Sort ve Cycle Detection: Bağımlılık Sırası ve Kahn Algoritması
Bilgisayar Bilimi Temelleri SERİ 16

Topological Sort ve Cycle Detection: Bağımlılık Sırası ve Kahn Algoritması

Topological sort, bir DAG'in vertex'lerini her bağımlılık bağımlısından önce gelecek şekilde O(V + E)'de sıralar; Kahn algoritması in-degree ve queue ile, DFS ise üç renkle çalışır. C# ile ikisini yazıyor, seed data ve build sırası üretiyor, cycle yolunu raporluyor, EF Core'un SaveChanges'ta aynı algoritmayı kullandığını ve DI container'ın circular dependency hatasını gerçek çıktıyla gösteriyoruz.

8 Kas 2026 10 dk 3
Shortest Path: Dijkstra, PriorityQueue ve A*'a Kısa Bakış
Bilgisayar Bilimi Temelleri SERİ 17

Shortest Path: Dijkstra, PriorityQueue ve A*'a Kısa Bakış

Negatif olmayan ağırlıklı graph'ta en ucuz yolu Dijkstra bulur: PriorityQueue'da decrease-key olmadığı için lazy deletion ile O((V + E) log V). Şehirler arası kargo ağında Dijkstra'yı adım adım izliyor, path reconstruction yapıyor, negatif ağırlıkta yanlış sonucu ve Bellman-Ford'u gösteriyor, A*'ın 200 × 200 depo grid'inde 33.600 yerine 1.845 hücreyle aynı yolu bulduğunu ölçüyoruz.

8 Kas 2026 11 dk 3
Union-Find ve Minimum Spanning Tree: Kruskal ile Ağ Kurmak
Bilgisayar Bilimi Temelleri SERİ 18

Union-Find ve Minimum Spanning Tree: Kruskal ile Ağ Kurmak

Union-Find, path compression ve union by rank ile "bu iki eleman aynı grupta mı?" sorusunu pratikte sabit sürede cevaplar; naive versiyon uzun zincirde 4.300 kat yavaş. C# ile DisjointSet yazıyor, ortak e-posta ve telefon üzerinden duplicate müşteri hesaplarını birleştiriyor, Kruskal ile ofisler arası en ucuz fiber ağını kuruyor ve Prim ile aynı sonucu doğruluyoruz.

8 Kas 2026 12 dk 3
Backtracking: Permutation, Subset ve Sudoku ile Arama Ağacını Budamak
Bilgisayar Bilimi Temelleri SERİ 19

Backtracking: Permutation, Subset ve Sudoku ile Arama Ağacını Budamak

Backtracking, choose, explore ve unchoose adımlarıyla bütün seçenekleri sistemli dener; asıl gücü çözüme varamayacak dalları erken budamaktır: 8-Queens'te 19 milyon node yerine 2.057. C# ile yield return kullanan permutation, subset ve combination üreticileri, N-Queens, en kısıtlı hücreden başlayan bir Sudoku solver ve kurallı bir ürün konfigüratörü yazıyoruz.

8 Kas 2026 13 dk 3
Greedy Algoritmalar: Ne Zaman İşe Yarar, Ne Zaman Yanıltır
Bilgisayar Bilimi Temelleri SERİ 20

Greedy Algoritmalar: Ne Zaman İşe Yarar, Ne Zaman Yanıltır

Greedy algoritma her adımda o an en iyi görünen seçimi yapar ve yalnız greedy choice property varsa doğrudur: en erken biten toplantıyı seçmek optimaldir, {1, 3, 4} paralarıyla 6 için en büyük parayı seçmek değildir. C# ile activity selection, min-heap ile oda sayısı ve Huffman coding yazıyor, exchange argument'i açıklıyor ve greedy'yi bir hakemle karşılaştırıp karşı örnek arıyoruz.

8 Kas 2026 11 dk 3
Dynamic Programming 1: Memoization, Tabulation ve Alt Problemleri Tanımak
Bilgisayar Bilimi Temelleri SERİ 21

Dynamic Programming 1: Memoization, Tabulation ve Alt Problemleri Tanımak

Dynamic programming, tekrar eden alt problemleri bir kez çözüp saklayarak exponential bir hesabı polinom zamana indirir: naive Fibonacci F(40) için 331 milyon çağrı yapar, memoization 79. C# ile memoization, tabulation ve O(1) bellek versiyonlarını ölçüyor, beş adımlı tarifle climbing stairs, house robber ve coin change'i çözüyor, yanlış memo key'ini ve stack overflow'u gerçek çıktıyla gösteriyoruz.

8 Kas 2026 12 dk 3
Dynamic Programming 2: Edit Distance, LCS ve Knapsack ile Gerçek Problemler
Bilgisayar Bilimi Temelleri SERİ 22

Dynamic Programming 2: Edit Distance, LCS ve Knapsack ile Gerçek Problemler

İki boyutlu DP tabloları iki string'in ya da bir bütçenin prefix'lerini tutar: Levenshtein ile "Bunu mu demek istediniz?", LCS ile git diff'le aynı çıktıyı veren bir diff, 0/1 knapsack ile bütçe sınırlı kampanya seçimi. C# ile üçünü yazıyor, eşikli Levenshtein'ın 20 kat hızlandığını ölçüyor, tek satırlık knapsack'te döngü yönü tuzağını gösteriyor ve seriyi bir pattern karar tablosuyla kapatıyoruz.

8 Kas 2026 14 dk 3
Blog Haritası