Big-O gösterimi: zaman karmaşıklığı

Java'da Kod Optimizasyonu

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Zaman karmaşıklığı nedir?

  • Zaman karmaşıklığı: Çalışma süresinin girdiyle nasıl arttığını ölçer
  • Şu soruya yardımcı olur: "Verim 10× artarsa ne olur?"
  • Mutlak süreye odaklanmaz
Java'da Kod Optimizasyonu

Big-O gösterimi

En kötü durumu tanımlayan matematiksel gösterim.

Yaygın karmaşıklık sınıfları:

  • O(1): Sabit süre - boyuttan bağımsız
Java'da Kod Optimizasyonu

O(1)'i anlamak

  • ArrayList'in get() işlemi bir O(1) örneğidir

String tutan bir ArrayList için (basitleştirilmiş) iç uygulama:

public class ArrayList {}
    private String[] data; // Internal array
    private int size;

    // Get operation - direct array access
    public String get(int index) {
        return data[index]; // O(1)
    }
}
Java'da Kod Optimizasyonu

Big-O gösterimi

En kötü durumu tanımlayan matematiksel gösterim

Yaygın karmaşıklık sınıfları:

  • O(1): Sabit süre - boyuttan bağımsız
  • O(n): Doğrusal süre - girdiyle artar
Java'da Kod Optimizasyonu

O(n)'i anlamak

  • ArrayList'in contains() işlemi için benzer bir örnek
public boolean contains(Object o) {
    return indexOf(o) >= 0;
}

public int indexOf(Object o) {
    // Dizide doğrusal arama
    for (int i = 0; i < size; i++) {
        if (o.equals(elementData[i])) {
            return i;
        }
    }
    return -1; // Bulunamadı
}
Java'da Kod Optimizasyonu

Big-O gösterimi

En kötü durumu tanımlayan matematiksel gösterim

Yaygın karmaşıklık sınıfları:

  • O(1): Sabit süre - boyuttan bağımsız
  • O(n): Doğrusal süre - girdiyle artar
  • O(n²): Karesel süre - karesel artar
Java'da Kod Optimizasyonu

Karesel karmaşıklığa pratik bir örnek

// Hedef toplamı veren sayı çifti bulma
// Zaman karmaşıklığı: O(n²)

public int[] findPairWithSum(ArrayList<Integer> numbers, int targetSum) {
    for (int i = 0; i < numbers.size(); i++) {
        for (int j = i + 1; j < numbers.size(); j++) {
            if (numbers.get(i) + numbers.get(j) == targetSum) {
                console.log("Found them!")
            }
        }
    }
}
Java'da Kod Optimizasyonu

Zaman karmaşıklığı neden önemlidir?

Girdi boyutunun etkisi:

  • O(1): 1.000 -> 1.000.000 öğe = Aynı süre!
  • O(n): 1.000 -> 1.000.000 öğe = 1.000× yavaş
  • O(n²): 1.000 -> 1.000.000 öğe = 1.000.000× yavaş

10 Mayıs 2025 14:27:06 ekran görüntüsü.png

Java'da Kod Optimizasyonu

Hadi pratik yapalım!

Java'da Kod Optimizasyonu

Preparing Video For Download...