algoritma © pixabay.com foto: pixabay.com

Pada dasarnya, fungsi utama dari suatu algoritma adalah agar mampu memecahkan suatu masalah. Sedangkan fungsi dan manfaat lain dari algoritma adalah sebagai berikut ini:

- Membantu menyederhanakan suatu program yang rumit dan juga besar.
- Mempermudah membuat program yang dapat menyelesaikan masalah tertentu.
- Bisa digunakan berulang kali dalam menyelesaikan suatu permasalahan.
- Membantu menyelesaikan suatu masalah dengan logika dan juga sistematis.
- Meminimalisir penulisan program secara berulang-ulang.
- Melakukan pendekatan top-down dan divide and conquer.
- Memudahkan pembuatan program yang lebih rapi dan juga terstruktur.
- Mempermudah proses modifikasi pada suatu program karena bisa dilakukan hanya pada satu modul saja, tanpa merubah modul yang lainnya lagi.
- Mampu membantu menemukan kesalahan karena alur kerjanya yang jelas.
- Mempermudah berbagai proses dokumentasi.

Jenis-Jenis Algoritma

Seorang pakar matematika dan komputer, Dr. Christoph Koutschan mengatakan terdapat setidaknya 32 algoritma di dalam ilmu komputer. Tapi jika dilihat berdasarkan fungsinya, hanya terdapat enam algoritma dasar, yakni:

1. Rekursi

Algoritma rekursi adalah sesuatu yang akan memanggil dirinya sendiri secara berulang-ulang, agar masalahnya bisa diselesaikan dengan baik. Berikut ini adalah beberapa kode yang mampu menemukan faktorial dengan menggunakan algoritma rekursi.

Fact(y)

If y is 0

return 1

return (y*Fact(y-1)) /* this is where the recursion happens*/

2. Divide and Conquer

Divide and conquer akan membagi suatu permasalahan yang besar menjadi berbagai permasalahan lain yang lebih kecil. Jenis algoritma ini sebenarnya terdiri dari dua bagian utama, yaitu:

- Memecahkan masalah kedalam beberapa sub-masalah yang lebih independen dan lebih kecil dari jenis lainnya yang sama.
- Menyelesaikan masalah asli setelah sebelumnya mampu menyelesaikan masalah yang lebih kecil secara terpisah.

Berikut ini adalah contoh kode semu dari algoritma divide and conquer:

MergeSorting(ar[], l, r)

If r > l

Find the mid-point to divide the given array into two halves:
middle m = (l+r)/2

Call mergeSorting for the first half:
Call mergeSorting(ar, l, m)

Call mergeSorting for the second half:
Call mergeSorting(ar, m+1, r)

Merge the halves sorted in step 2 and 3:
Call merge(ar, l, m, r)