Big O Notation
Ketahui kompleksitas kode Anda
Every good programmer will use the most effective and efficient ways to solve the problem. And to do that, we must know how to minimize the complexity.
Apakah itu Big O Notation? Big o notation dapat kita fahami sebagai notasi atau lambang matematika yang menggambarkan tingkat dari kompleksitas atau kerumitan suatu sistem. Big o notation biasanya dilambangkan sebagai O(n).
Prinsip-prinsip big o notation ini dapat kita terapkan pada ilmu komputer untuk mengelompokkan atau mengklasifikasikan algoritma pemograman berdasarkan kerumitannya. Pada penerapannya, big o notasi ini mengukur tingkat lamanya waktu proses (running time) dan space atau resource yang digunakan berbading lurus dengan bertambahnya input data.
Big o notasi menjelaskan suatu fungsi yang diindentifikasi berdasarkan pertumbuhan datanya. Fungsi atau algoritma yang berbeda tetapi tingkat pertumbuhannya sama dapat dilambangkan dengan big o notasi yang sama.
Selanjutkan kita akan lebih membahas big o notasi untuk penggunaan pada pemograman komputer. Pembahasan matematika karena cukup rumit diluar pembahasan kali ini.
Para developer atau programmmer biasaanya mendifinisikan tingkat kerumitan code atau algoritma yang kita buat mengunakan big o notasi ini. Dengan demikian, hal ini memudahkan cara berkomunikasi yang baik antar programmer dalam membahas kerumitan suatu algoritma.
Berikut adalah cheat sheet dari bebarapa operasi umum pada struktur data dalam bahasa pemograman.
Dengan membaca tabel di atas dan membandingkan dengan grafik dari big o notasi kita dapat mengetahui algoritma yang kita buat baik atau buruk.
Sebagau cotoh, konsep arrray memiliki notasi O(1) untuk cara mengkases data dan O(n) untuk proses input data. Dari kedua grafik tersebut kita mendapatkan informasi bahwa konsep array ini memiliki performance terbaik untuk cara akses dan tidak terpengaruh terhadap banyaknya data. Adapun untuk proses insert data dia akan meningkat secara aritmetik dan prosesnya masih di bilang sangat bangus.
Berikut data cheat sheet untuk teknik melakukan sorting dan nilai big o notasinya.
Cara Membaca dan Memahami Big O
Dari tabel di atas dan penjelasan tingkat kompleksitas konsep array kita mendapatkan informasi bahwa tingkat kompleksitas ini terbagi dalam dua kelompok besar. Kompleksitas dalam waktu dalam artian semakin komplek maka lamanya pemrosesan semakin bertambah. Selanjutnya adalah kompleksitas dalam ruang, semakin kompleks maka raung yang digunakan dalam hal ini resource penyimpanan khususnya memory akan semakin besar.
Berikut beberapa contoh unutk membaca notasi big o dan penjelasannya.
- O(log n) berarti tingkat kompleksitas akan berbanding lurus dengan log dari banyaknya jumlah data. Apabila ada algoritma dengan komplesitas ini maka algoritma yang digunakan sangat bagus.
- O(1) berarti tingkat kompleksitas akan bersifat konstan berapun jumlah data yang di proses. Ini adalah nilai unutk algoritma yang paling bagus.
- O(n) berarti tingkat kompleksitas akan berbanding lurus dengan banyaknya data. Sering disebut dengan tingkat kompleksitas linear atau aritmatika.
- O(n+2) atau O(2n+5) sama dengan tingkat kompleksitas O(n). Jadi konstanta tidak dimasukan dalam penghitungan tingkat kompleksitas.
Kegunaan Pemahaman Big O
Muncul sebuah pertanyaan apakah pengetahuan big o notasi ini berguna pada kehidupa sehari-hari programmer atau hanya berguna ketika akan mengikuti test penerimaan kerja? Jawabannya adalah ya untuk kedua kondisi tersebut.
Pada penggunaan sehari-hari pengetahaun big o notasi ini akan sangat berguna dalam meningkatkan kwalitas serta performance dari algoritma-algoritma yang kita buat. Kita sebagai programmer dapat mengetahui apakah code kita akan berjalan sangat lambat ketika jumlah data yang terlibat meningkat? Atau seberapa parah kodenya ketika data yang kita proses membengkak sampai jutaan data misalnya.
Notes
Array, Stack, Queue, Singly-Linked List, Doubly-Linked Lis, Skip List, Hash Table, Binary Search TreeCartesian Tree, B-Tree, Red-Black Tree, Splay, TreeAVL Tree, dan KD Tree.
IT Training
Mau improve skill IT dan pemrograman Anda, Silahkan cek jadwal training berikut.
Kaos Pemrograman
Membutuhkan kaos dengan tema pemrograman :
Dapat menghubungi The Legend