İçeriğe atla
ΣDSA Patterns
Menü
Dil

Karmaşıklık

Karmaşıklık ve Big-O

Kod mülakatları için pratik bir giriş: Big-O ne demek, yaygın sınırlar, döngüleri nasıl analiz edersin, alan karmaşıklığı nerede devreye girer.

Big-O neyi ölçer?

Zaman karmaşıklığı, girdi boyutu n büyüdükçe algoritmanın yaptığı işin nasıl ölçeklendiğini söyler. Mülakatlarda genelde en kötü durum (worst-case) Big-O’su istenir; bazen ortalama durum da konuşulur (ör. hash map).

Big-O sabit çarpanları ve düşük dereceli terimleri yok sayar: 3n² + 100n + 5O(n²). Amaç “bu yaklaşım büyüdükçe yaşar mı?” sorusuna hızlı cevap vermektir.

Yaygın sınırlar

Big-OAdTipik örnekNe zaman
O(1)SabitDizi indeksi, hash map ortalama get/putGirdi boyutundan bağımsız iş
O(log n)Logaritmikİkili arama, dengeli ağaçta aramaHer adımda arama uzayını yarıya indir
O(n)DoğrusalTek geçiş, dizi taramaHer öğeye bir kez bak
O(n log n)Lineeritmikİyi sıralamalar (merge/heap), birçok “sırala + tara”Sıralama veya böl-yönet birleştirme
O(n²)Kareselİç içe iki döngü, naif çift kontrolüHer çift / her i,j
O(2ⁿ)ÜstelAlt küme tam sayım, naif özyinelemeHer eleman dahil/hariç
O(n!)FaktöriyelTüm permütasyonlarSıra sayımı (n küçük olmalı)

Döngüleri nasıl sayarsın?

Alan (space) karmaşıklığı

Girdi dışında ne kadar ek bellek kullanıyorsun? Çıktı dizisi bazen sayılır bazen “gerekli çıktı” diye ayrı tutulur, mülakatta netleştir. Özyineleme yığını da alandır: derinlik d ise çoğu zaman O(d) ek alan.

Yapılara göre kaba tablo

YapıErişimAramaEklemeNot
Dizi / listeO(1)O(n)O(n)**Sona ekleme amortize O(1) olabilir
Hash map / set-O(1) ort.O(1) ort.Kötü hash / çarpışmada O(n)
Sıralı diziO(1)O(log n)O(n)İkili arama mümkün
Yığın / kuyrukO(1) uçO(n)O(1)Uç işlemleri
Min/max heapO(1) minO(n)O(log n)Top-K ve öncelik
Dengeli BST-O(log n)O(log n)Sıralı gezinme

Mülakat ipuçları

Sonraki adım

Temel kalıplara geç: yol haritası, kalıp listesi, veya kaynaklar (platformlar, kitaplar, referanslar).