Java'da Kod Optimizasyonu
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
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ızArrayList'in get() işlemi bir O(1) örneğidirString 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)
}
}
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ızO(n): Doğrusal süre - girdiyle artarArrayList'in contains() işlemi için benzer bir örnekpublic 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ı
}
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ızO(n): Doğrusal süre - girdiyle artarO(n²): Karesel süre - karesel artar// 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!")
}
}
}
}
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ş
Java'da Kod Optimizasyonu