Ketika saya memulai perjalanan saya ke dalam algoritma, saya senang mendapatkan solusi yang berhasil. Saya tidak peduli berapa lama, seberapa jeleknya (biasanya sangat), atau seberapa efisiennya; tapi hari-hari tanpa beban itu telah berlalu. Masalahnya adalah, ketika Anda menulis kode yang mungkin benar-benar digunakan untuk proyek besar, yang penting adalah berapa panjang kode Anda, seberapa jeleknya, dan terutama seberapa efisiennya. Beginilah cara saya bertemu dengan notasi Big O teman saya. Pada awalnya dia mungkin tampak misterius atau membingungkan, tetapi pada akhirnya Anda akan bersikap ramah padanya.

Jadi, apa itu notasi Big O?

Sederhananya, O besar menggambarkan kinerja algoritma dalam kasus terburuk. Big O dapat digunakan untuk menggambarkan berapa lama waktu proses suatu algoritma atau berapa banyak ruang yang digunakan dalam memori. Big O membantu Anda mengetahui semakin besar ukuran masukan, berapa lama lagi waktu yang dibutuhkan program Anda untuk berjalan atau berapa banyak ruang yang diperlukan.

Biasanya ditemui Big O

O(1)

O(1) berarti runtime atau space yang digunakan adalah konstan tidak peduli seberapa besar atau kecil nilai inputnya. Inilah mimpinya. Tujuan akhir yang sangat jarang tercapai namun begitu indah bila tercapai.

Dalam contoh kode ini, angka inputnya bisa 5 atau 10.000 dan fungsinya akan memerlukan jumlah waktu yang sama untuk dijalankan. Oleh karena itu, O Besar untuk waktu adalah O(1).

O(N)

O(N) berarti runtime atau space yang digunakan berbanding lurus dengan ukuran input. Tidak terlalu buruk.

Pada contoh kode di bawah ini, jika larik masukan memiliki panjang satu, perulangan for hanya akan berjalan satu kali dan log konsol satu kali, tetapi jika larik masukan memiliki panjang 1.000, perulangan for akan berjalan 1.000 kali dan log konsol 1.000 kali. Oleh karena itu, O Besar untuk waktu adalah O(N).

O(log N)

O(log N) berarti runtime atau space yang digunakan sebanding dengan log input. Ini bagus setelah Anda mendapatkan masukan yang semakin besar karena mulai mencapai waktu proses atau penggunaan ruang yang hampir konstan.

Untuk contoh ini, setiap kali kita melewati perulangan for, nilai i menjadi dua kali lipat. Jika angka inputnya adalah 10, maka fungsi akan mencatat empat kali secara terpisah, namun jika angka inputnya dua kali lipat dari ukuran (20), maka fungsi hanya akan mencatat satu kali tambahan untuk total lima log. Oleh karena itu, O Besar untuk waktu adalah O(log N)

Perlu diketahui bahwa ini bukan satu-satunya Big O yang pernah Anda temui. Anda dapat memiliki O(N²), O(N³), O(N!), O(2^N), dan masih banyak lagi!