Algoritma memiliki dua skema, yaitu iteratif dan rekursif. Iteratif yaitu algoritma yang melakukan perulangan biasa, sedangkan rekursif adalah algoritma yang melakukan
perulangan dengan melakukan pemanggilan terhadap dirinya sendiri. Contoh algoritma pengurutan yang termasuk dalam skema iteratif, yaitu pengurutan apung bubble sort dan
selection sort, Contoh algoritma pengurutan yang termasuk dalam skema rekursif, yaitu pengurutan merge merge sort, pengurutan heap heap sort dan pengurutan cepat quick
sort. Tidak semua algoritma tersebut hanya memiliki satu skema, misalnya algoritma pengurutan seleksi atau selection sort yang dapat menggunakan skema rekursif, namun di
dalam penelitian ini selection sort yang dibahas menggunakan skema iteratif Fanani 2008.
2.3. Kompleksitas Algoritma
Efisiensi sebuah algoritma tergantung dari beberapa hal, diantaranya adalah :
Kinerja CPU
Kinerja Memori
Kinerja Disk
Kinerja Jaringan
Algoritma memiliki kompleksitas, kompleksitas merupakan acuan utama utama untuk mengetahui kecepatan dari sebuah algoritma. Kompleksitas dibagi menjadi tiga, yaitu Rao
and Ramesh 2012 : 1.
Best case Ω, yaitu kompleksitas algoritma dimana algoritma tersebut berjalan dalam kondisi terbaik.
2. Average case , yaitu kompleksitas algoritma dimana algoritma tersebut berjalan
dalam kondisi sedang, biasanya inputnya secara acak. 3.
Worst case Ο, yaitu kompleksitas algoritma dimana algoritma tersebut berjalan dalam kondisi terburuk.
Universitas Sumatera Utara
2.4. Growth Function
Kinerja sebuah algoritma biasanya di ukur dengan mengacu pada kondisi terburuknya, yaitu worst case yang dilambangkan dengan notasi Big O. Notasi Big O adalah fungsi yang
berkaitan dengan kelajuan proses dan kelajuan pertambahan data Suryani 2013.
Tabel 2.1 Tabel Notasi Big O Notasi
Nama Contoh Aplikasi
O1 Konstan
Menentukan apakah suatu bilangan ganjil atau genap
Olog n Iterasi Logaritmik
Algoritma pencarian Hopcraff dan Ullman untuk himpunan disjoint
Olog n Logaritmik
Pencarian dalam list terurut dengan Binary Search Algorithm
Olog n
c
Polilogaritmik Menentukan bilangan prima dengan AKS
primality test On
Linear Pencarian dalam list tidak terurut
On log n Linearitmik
Mengurutkan list dengan Heapsort On
2
Kuadratik Mengurutkan list dengan Insertion Sort
On
c
,c1 Poliomial
Pencarian shortest path dengan algoritma Floyd Warshall
Oc
n
Eksponensia Pencarian solusi untuk traveling salesmen
problem On
Faktorial Menyelesaikan traveling salesmen problem
dengan menggunakan brute force O2
cn
Dobel Eksponensial Pencarian himpunan lengkap dari AC-unifiers
associative-commutative unifiers Sumber :
Mcgeoch, 2012
Universitas Sumatera Utara
2.5. Notasi Asimptotik
Notasi asimptotik digunakan untuk menentukan kompleksitas suatu algoritma dengan melihat waktu tempuh running time sebuah algoritma. Waktu tempuh algoritma
merupakan fungsi : N → R suatu algoritma dengan algoritma lainnya. Notasi asimptotik dapat dituliskan dengan beberapa simbol, yaitu :
Notasi Big O, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas.
Notasi Little o, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas
namun tidak secara ketat terikat not asymptotically tight.
Notasi Theta , yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas dan bawah.
Notasi Omega , yaitu notasi asimptotik sebuah fungsi algoritma untuk batas
bawah, notasi ini berlawanan dengan notasi little-o.
2.6. Pengertian Selection Sort