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)