Sobes.tech
Junior

Büyük O notasyonu nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Big O gösterimi (Big O), bir fonksiyonun asimptotik davranışını ve üst sınırını tanımlamak için kullanılan matematiksel bir gösterimdir. Yazılım geliştirme bağlamında, giriş verilerinin boyutu arttıkça algoritmaların performansını zaman (zaman karmaşıklığı) ve bellek (mekan karmaşıklığı) açısından değerlendirmek için kullanılır. En kötü durumu tanımlar.

En yaygın zaman karmaşıklığı sınıfları:

  • O(1): Sabit zaman. Çalışma süresi giriş verilerinin boyutuna bağlı değildir.
  • O(log n): Logaritmik zaman. Çalışma süresi giriş verilerinin boyutu arttıkça yavaşça artar (örneğin, ikili arama).
  • O(n): Doğrusal zaman. Çalışma süresi giriş verilerinin boyutuna orantılıdır (örneğin, doğrusal arama).
  • O(n log n): Doğrusal-logaritmik zaman. Verimli sıralama algoritmalarında sıkça görülür (örneğin, hızlı sıralama, birleştirme sıralaması).
  • O(n^2): Kare zaman. Çalışma süresi giriş verilerinin kareleriyle orantılıdır (örneğin, kabarcık sıralama, seçim sıralaması).
  • O(2^n): Üssel zaman. Çalışma süresi, giriş verilerinin boyutuyla çok hızlı artar. Tam tarama problemlerinde sıkça görülür.

Kod örnekleri ve zaman karmaşıklıkları:

// O(1)
int ilkEleman = dizi[0];
// O(n)
for (int i = 0; i < dizi.length; i++) {
    // bir işlem
}
// O(n^2)
for (int i = 0; i < dizi.length; i++) {
    for (int j = 0; j < dizi.length; j++) {
        // bir işlem
    }
}

Big O gösterimi, ifadede baskın olan terime odaklanır ve sabitleri ile daha az önemli terimleri göz ardı eder, çünkü büyük girişlerde katkıları önemsiz hale gelir. Örneğin, O(2n^2 + 5n + 10) karmaşıklığındaki bir algoritma O(n^2) olarak kabul edilir.

Big O'yu anlamak, geliştirme sırasında en verimli algoritmaları ve veri yapılarını seçmek için önemlidir.