Optimasi Kode di Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
Notasi matematika untuk menggambarkan skenario terburuk.
Beberapa kelas kompleksitas umum:
O(1): Waktu konstan - tidak bergantung ukuranget() milik ArrayListImplementasi internal (disederhanakan) untuk ArrayList yang menyimpan String:
public class ArrayList {}
private String[] data; // Internal array
private int size;
// Operasi get - akses array langsung
public String get(int index) {
return data[index]; // O(1)
}
}
Notasi matematika untuk menggambarkan skenario terburuk
Beberapa kelas kompleksitas umum:
O(1): Waktu konstan - tidak bergantung ukuranO(n): Waktu linear - naik seiring ukuran inputcontains() milik ArrayListpublic boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
// Pencarian linear dalam array
for (int i = 0; i < size; i++) {
if (o.equals(elementData[i])) {
return i;
}
}
return -1; // Tidak ditemukan
}
Notasi matematika untuk menggambarkan skenario terburuk
Beberapa kelas kompleksitas umum:
O(1): Waktu konstan - tidak bergantung ukuranO(n): Waktu linear - naik seiring ukuran inputO(n²): Waktu kuadratik - naik kuadratik terhadap ukuran input// Mencari pasangan angka yang jumlahnya sama dengan target
// Kompleksitas waktu: 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!")
}
}
}
}
Dampak ukuran input:
O(1): 1.000 -> 1.000.000 item = Waktu sama!O(n): 1.000 -> 1.000.000 item = 1.000× lebih lambatO(n²): 1.000 -> 1.000.000 item = 1.000.000× lebih lambat
Optimasi Kode di Java