Anda di halaman 1dari 9

Complexity Analysis

Pelatnas 1 TOKI 2017


Jonathan Christopher
Why analyze complexity of algorithms?

Untuk memperkirakan apakah suatu algoritma


cukup cepat untuk menyelesaikan soal dalam
batas waktu tertentu
➜ Jangan mulai mengetik kode kalau belum yakin
pendekatan yang akan digunakan sudah benar dan tidak
akan melebihi time limit
Inti dari complexity analysis:

menghitung jumlah 'instruksi',


tapi hanya melihat
kecenderungannya saja
Selection sort

for (int i = 0; i < length-1; i++) {


int min = arr[i];
for (int j = i+1; j < length; j++) {
If (arr[j] < min) min = arr[j];
}
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
Recursion

// Menghitung jumlah 1+2+...+n


int jumlah(int n) {
if (n <= 0) return 0;
else return jumlah(n-1) + n;
}
O(n) vs O(n^2)
O(n) vs O(sqrt(n)) vs O(log n)
Memperkirakan time limit

➜ Tergantung spek grader dan faktor-faktor konstan

➜ Asumsi: 10 000 000 perulangan per detik

➜ O(n^2): 5000 n
➜ O(n log n): 100 000 n
➜ O(n): 10 000 000 n
➜ O(sqrt(n)): 10^12 n
➜ O(log n): +++ n
Referensi

visualgo.net
http://discrete.gr/complexity

Anda mungkin juga menyukai