Bir kod yazdınız, küçük bir listede göz açıp kapayana kadar çalışıyor. Ama veri milyonlara çıktığında dakikalarca bekliyorsunuz. İşte Big O notasyonu, bir kodun veri büyüdükçe nasıl davranacağını önceden söyleyen ortak dildir.
Big O nedir?
Big O, bir algoritmanın çalışma süresinin veri boyutu (n) büyüdükçe nasıl arttığını gösterir. Saniye ölçmez; büyüme hızını tarif eder. Bu yüzden hangi bilgisayarda çalıştığından bağımsız bir karşılaştırma sunar.
En yaygın sınıflar
O(1) sabit süredir: veri ne kadar büyürse büyüsün süre değişmez. O(n) doğrusaldır: veri iki katına çıkarsa süre de iki katına çıkar. O(n²) ise iç içe döngülerin klasik sonucudur ve veri büyüdükçe hızla kontrolden çıkar.
Neden önemli?
Çünkü küçük veride hiçbir fark hissedilmez; fark, ölçek büyüyünce ortaya çıkar. Bir O(n²) çözüm 100 kayıtta anında biterken, 100.000 kayıtta pratikte kullanılamaz hale gelir.
Basit bir örnek
Bir listede tek tek arama yapmak O(n)’dir; her öğeyi kontrol edersiniz. Ama bir sözlükte (dict) anahtarla erişim yaklaşık O(1)’dir. Doğru veri yapısını seçmek, çoğu zaman kodu hızlandırmanın en kolay yoludur:
# O(n) - listede arama
if hedef in liste:
...
# O(1) - sözlükte arama
if hedef in sozluk:
...İşin hocası ne yapar?
İşin hocası kodun küçük veride hızlı olmasına aldanmaz; “veri on kat büyürse ne olur?” diye sorar. Kavram için Big O notasyonu sayfasına bakabilirsiniz.
İlgili yazı: Özyineleme (Recursion)
Sıkça Sorulan Sorular
Big O notasyonu nedir?
Bir algoritmanın çalışma süresinin, veri boyutu büyüdükçe nasıl arttığını gösteren bir gösterimdir. Saniye cinsinden süre ölçmez, büyüme hızını tarif eder.
O(n) ile O(n²) arasındaki fark nedir?
O(n) doğrusaldır; veri iki katına çıkarsa süre de yaklaşık iki katına çıkar. O(n²) ise karesel büyür; veri on kat artarsa süre yüz kat artabilir. Bu yüzden büyük veride O(n²) çözümler kullanılamaz hale gelir.
Big O bilmek neden gereklidir?
Çünkü küçük veride tüm çözümler hızlı görünür; fark ancak veri büyüdüğünde ortaya çıkar. Big O, bir kodun ölçeklenip ölçeklenmeyeceğini önceden anlamayı sağlar.
