Modul 0 : Big O Notation - fzl-22/modul-alstrukdat-sainsdata GitHub Wiki
Big O Notation
Big O Notation adalah salah satu konsep penting dalam ilmu komputer dan analisis algoritma yang digunakan untuk mengukur kinerja algoritma dan kompleksitas waktu. Notasi ini membantu kita memperkirakan berapa lama waktu yang dibutuhkan untuk menjalankan suatu algoritma dalam kaitannya dengan ukuran inputnya.
Pengertian
Big O Notation menggambarkan kinerja suatu algoritma dengan cara memperkirakan jumlah operasi yang diperlukan oleh algoritma untuk menyelesaikan suatu masalah dalam kaitannya dengan ukuran masukan (input). Notasi ini memberikan batasan atas (upper bound) kinerja algoritma dalam hal waktu eksekusi atau penggunaan memori.
Representasi
Notasi Big O direpresentasikan dengan O(f(n)), di mana 'f(n)' adalah fungsi yang menggambarkan jumlah operasi yang diperlukan oleh algoritma dalam kaitannya dengan ukuran inputnya (n). Beberapa contoh umum dari fungsi 'f(n)' meliputi:
- O(1): Konstan
- O(log n): Logaritmik
- O(n): Linear
- O(n log n): Log-linear atau quasi-linear
- O(n^2): Kuadratik
- O(2^n): Eksponensial
- O(n!): Faktorial
Contoh
Misalkan kita memiliki sebuah array dengan panjang 'n' dan ingin mencari apakah suatu angka tertentu terdapat di dalamnya. Berikut adalah beberapa contoh kompleksitas waktu yang berbeda:
-
Linear Search (Pencarian Linear):
- Kompleksitas waktu: O(n)
- Algoritma ini melakukan pencarian satu per satu dari awal array hingga menemukan elemen yang dicari atau mencapai akhir array.
-
Binary Search (Pencarian Biner):
- Kompleksitas waktu: O(log n)
- Algoritma ini membagi array menjadi dua bagian dan mencari elemen di tengahnya. Dengan setiap iterasi, setengah dari array dieliminasi.
-
Bubble Sort:
- Kompleksitas waktu: O(n^2)
- Algoritma ini membandingkan pasangan-pasangan elemen secara berurutan dan menukar mereka jika diperlukan, menghasilkan array yang terurut secara berurutan.
-
Merge Sort:
- Kompleksitas waktu: O(n log n)
- Algoritma ini menggunakan pendekatan divide and conquer, membagi array menjadi sub-array yang lebih kecil, mengurutkannya, dan kemudian menggabungkan sub-array tersebut kembali untuk menghasilkan array yang terurut.
Kesimpulan
Big O Notation adalah alat yang sangat berguna dalam analisis algoritma untuk memahami kinerja relatif dari berbagai algoritma dan mengevaluasi trade-off antara waktu dan ruang. Dengan memahami kompleksitas waktu algoritma, kita dapat membuat keputusan yang lebih baik dalam merancang dan mengoptimalkan program komputer.