Analisis dan Running Time Selection Sort Penjelasan Singakat Merge Sort

 Tukarkan dengan nilai elemen terujung awal yaitu A[6]. Lalu elemen A[6] tersebut udah terurut. 3 9 13 19 21 26 38 Elemen yang tersisa yaitu elemen terakhir A[7] = 38. Elemen tersebut tidak perlu diurutkan karena elemen tersebut berada pada posisi yang sudah terurut. Jadi array atau larik A sudah terurut. Hasil array A yang sudah terurut yaitu : 3 9 13 19 21 26 38

3.3. Analisis dan Running Time Selection Sort

Running timealgoritma pengurutan seleksi selectionsort dapat dihitung dengan: Tabel 3.1. Running Time Selection Sort Cost Times for i 1 to n-1 do C 1 n i min i C 2 n-1 for j i+1 to n do C 3 ∑ if A[j] A[i min] C 4 ∑ then i min j C 5 ∑ Endif ∑ Endfor ∑ temp A[i] C 6 n-1 A[i] A[i min] C 7 n-1 A[i min] temp C 8 n-1 Endfor n Universitas Sumatera Utara Keterangan :  t i,j bernilai 1 jika kondisi if benar, 0 jika salah  ∑ ∑ ∑  ∑  ∑ dapat bernilai 1 atau 0.  Ketika kondisi Best Case maka kondisi if salah, t i,j = 0. Kondisi best case terjadi jika data dalam elemen array sudah terurut.Maka : Didapatkan notasi asimptotik best case selection sort adalah Tn =Ω  Ketika kondisi worst case maka kondisi if benar, t i,j = 1. Kondisi worst case terjadi jika data dalam elemen array terurut secara terbalik, Maka: Didapatkan notasi asimptotik best case selection sort adalah Tn=O Jadi baik dalam kondisi worst case, average case maupun best case didapatkan kompleksitas waktu algoritma selection sort yaitu :Tn=O

3.4. Selection Sort Model Inser Sisip

Metode insert sisip dimana data paling kecil disisipkan ke elemen pertama ascending dan data paling kecil disisip ke elemen terakhir descending. Contoh, kita memiliki sebuah larik array yang memiliki 7 buah elemen. Larik tersebut akan diurutkan secara menaik ascending dengan mencari nilai minimum sebagai pembanding. Universitas Sumatera Utara 3.4.1. Psedocode Selection sort Model insert function SelectionSortInsertarrayList data for i = 1 to data.length var int index var int check = data[i] get index of minimun data in array for j = i to data.length if data[j] = check index = j check = data[j] end if end for var int temp = data[index] to change index of array item from i to index for k = index down to i + 1 data[k] = data[k-1] end for move minimum element data[i] = temp end for return data end function

3.4.2. Simulasi Algoritma Pengurutan Selection Sort Model Insert

Contoh, kita memiliki sebuah Array larik A yang memiliki 7 buah elemen. Array larik tersebut akan diurutkan secara menaik ascending dengan mencari nilai minimum sebagai pembanding. 26 19 38 3 9 13 21 1 2 3 4 5 6 7 Pass 1: Pilih data terkecil dari array dan sisipkan ke elemen pertama 3 26 19 38 9 13 21 1 2 3 4 5 6 7 Pass 2: Pilih data terkecil dari array dan sisipkan ke elemen kedua 3 9 26 19 38 13 21 1 2 3 4 5 6 7 Pass 3 :Pilih data terkecil dari array dan sisipkan ke elemen ketiga Universitas Sumatera Utara 3 9 13 26 19 38 21 1 2 3 4 5 6 7 Pass 4 :Pilih data terkecil dari array dan sisipkan ke elemen ke empat 3 9 13 19 26 38 21 1 2 3 4 5 6 7 Pass 5 :Pilih data terkecil dari array dan sisipkan ke elemen ke lima 3 9 13 19 21 26 38 1 2 3 4 5 6 7 Selesai array dan terurut secara Ascending

3.5. Selection Sort Model New List Dua List

Pilih data terkecil dari list pertama dan buang dari list pertama, pindahkan ke list baru dan seterusnya. Contoh, kita memiliki sebuah list yang memiliki 7 buah elemen. List tersebut akan diurutkan secara menaik ascending dengan mencari nilai minimum sebagai pembanding. 3.5.1. Psedocode Selection sort with new list function SelectionSortNewListarrayList data var arrayList temp for i = 1 to data.length var int index var int check = data[i] get index of minimun data in array for j = 1 to data.length if data[j] = check index = j check = data[j] end if end for add new item array to temporary array temp.adddataindex remove item array with minimum data base on index data.removeAtindex end for return temp end function Universitas Sumatera Utara

3.5.2. Simulasi Algoritma Pengurutan Selection Sort Model New List

Contoh, kita memiliki sebuah list A yang memiliki 7 buah elemen. List tersebut akan diurutkan secara menaik ascending dengan mencari nilai minimum sebagai pembanding List Pertama New List 26 19 38 3 9 13 21 Pass 1 26 19 38 9 13 21 3 Pass 2 26 19 38 13 21 3 9 Pass 3 26 19 38 21 3 9 13 Pass 4 26 38 21 3 9 13 19 Pass 5 26 38 3 9 13 19 21 Pass 6 38 3 9 13 19 21 26 3 9 13 19 21 26 38 New List sudah terurut secara Ascending

3.6. Penjelasan Singakat Merge Sort

Algoritma merge sort dirancang untuk memenuhi kebutuhan pengurutan jika data yang diurutkan berjumlah banyak, dan tidak memungkinkan untuk ditampung dalam memori komputer. Cara kerja atau konsep dari algoritma merge sort adalah menggunakan metode rekursif dan teknik divide and conquer. a. Rekurensi Reccurence Merupakan sebuah fungsi atau prosedur yang digambarkan secara rekursif. Rekursif adalah proses untuk memanggil dirinya sendiri. Dan fungsi running timenya dapat digambarkan oleh recurrence Rekurensi. Definisi rekursif disusun oleh dua bagian, yaitu : 1. Basis, yaitu bagian yang berisi kasus yang terdefinisi secara eksplisit dan berguna untuk menghentikan rekursif memberikan sebuah nilai yang terdefinisi pada fungsi rekursif. 2. Rekurens, yaitu bagian yang mendefinisikan objek dalam terminologi dirinya sendiri. Misalnya pada proses untuk menghitung faktorial dari n, maka:  Basis : n=1 ,n=0 Universitas Sumatera Utara  Rekursi : n=n x n-1 ,n0 b. Divide and Conquer 1. Divide :Membagi sebuah array menjadi dua array, sebuah problem dipecah menjadi sub-sub problem yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil. 2. Conquer :Menyelesaikan masalah secara rekursif, yaitu mengurutkan setiap array. 3. Combine : Menggabungkan solusi yaitu dua array yang sudah terurut 3.6.1. Pseudocode Merge Sort PROCEDURE MERGESORTA, p, r IF p r Check for base case THEN q = FLOOR p + r2 Divide step MERGESORTA, p, q Conquer step. MERGESORTA, q + 1, r Conquer step. MERGEA,p, q, r Conquer step. PROCEDURE MERGEA, p, q, r n1 ← q − p + 1 n2 ← r − q Create arrays L[1 . . n1 + 1] and R[1 . . n2 + 1] FOR i ← 1 TO n1 DO L[i] ← A[p + i − 1] FORj ← 1 TO n2 DO R[j] ← A[q + j] L[n1 + 1] ← ∞ R[n2 + 1] ← ∞ i ← 1 j ← 1 FOR k ← p TO r DO IF L[i] ≤ R[j] THEN A[k] ← L[i] Universitas Sumatera Utara i ← i + 1 ELSE A[k] ← R[j] j ← j + 1 3.6.2. Loop Invariant Pada Prosedure Merge Sort  Statement Setiap iterasi pada for pengulang yang terakhir, sub-array A[p...k-1] berisi nilai k-p elemen terkecil dari array L dan R dalam keadaan yang sudah terurut. L[i] dan R[j] merupakan elemen terkecil dari array L dan R yang tidak dicopy ke array A.  Initialization Sebelum iterasipertama dilakukan, k = p. Sub-array A[p...k-1] berisi 0 elemen terkecil dari array L dan R. Ketika i = j = 1, L[i] dan R[j] adalah elemen terkecil dari array yang tidak di-copy ke array A. Kedua array L dan R dalam keadaan yang terurut  Maintenance Misalkan L[i] ≤ R[j], maka L[i] adalah elemen terkecil yang tidak di-copy ke array A. A[p...k-1] adalah k-p elemen terkecil, L[i] adalah k –p+1 th elemen terkecil. Kemudian L[i] di-copy ke A[k], A[p...k] berisi k –p+1 elemen terkecil. Secara berulang, nilai k + i membuat perulangan loop invariant. Jika L[i] R[j], maka nilai R[j] di-copy ke array A[k], dan nilai j + 1 agar pengulangan dapat terus dilakukan.  Termination Ketika nilai k = r + 1, A[p...k -1] = A[p...r] berisi k-p elemen terkecil dalam keadaan yang terurut. Menghasilkan k-p = r + 1 -p elemen terkecil dalam keadaan yang erurut. Kedua array L dan R berisi n1 + n2 + 2 = r - p + 3 elemen, dan dua buah ∞ telah di-copy kembali ke array A. 3.7. Simulasi Algoritma Merge Sort Contoh, kita memiliki sebuah larik array A yang memiliki 4 buah elemen. Larik tersebut akan diurutkan secara menaik ascending. Dengan nilai p adalah indeks elemen awal, yaitu p = 0. Nilai r adalah indeks elemen akhir, yaitu r = 3. A[0…3]= 12 9 24 2 Universitas Sumatera Utara 1. MERGESORTA, 0, 3  Kemudian diperiksa apakah jika p r, 0 3, jika benar maka dihitung q = p + r2 = 1.  Kemudian dipanggil MERGESORTA, 0, 1, MERGESORTA, 2, 3 dan MERGEA, 0, , 3 1.1 MERGESORTA, 0, 1  Kemudian diperiksa apakah jika p r, 0 1, jika benar maka dihitung q = p + r2 = 0.  Kemudian dipanggil MERGESORTA, 0, 0, MERGESORTA, 1, 1 dan MERGEA, 0, 0, 1. A[0…1]= 12 9 1.1.1. MERGESORTA, 0, 0 Kemudian diperiksa apakah jika p r, 0 0, karena salah maka rekursif pada bagian ini selesai. 1.1.2. MERGESORTA, 1, 1 Kemudian diperiksa apakah jika p r, 1 1, karena salah maka rekursif pada bagian ini selesai. 1.1.3. MERGEA, 0, 0, 1  Sesuai dengan algoritma maka nilai :  n1 = q − p + 1= 1  n2 = r –q= 1.  Lalu buat dua buah array bernama L dan R dengan jumlah elemen  L[1 . . n1 + 1] yaitu L[1...2]  R[1 . . n2 + 1] yaitu R[1...2]  Perulangan pada  FOR i ← 1 TO n1 DO L[i] ← A[p + i − 1]  nilai L[1] = A[0]= 12: L[1]= 12  Perulangan pada:  FOR j ← 1 TO n2 Universitas Sumatera Utara DO R[j] ← A[q + j]  nilai R[1] = A[1]= 9. R[1]= 9  Kemudian ditambahkan L[n1 + 1] ← ∞ dan R[n2 + 1] ← ∞, sehingga L[2] = ∞ dan R[2] = ∞. Sehingga array L dan Rberisi : Array[1]= 12 ∞ dan array R= 9 ∞ Kedua array tersebut sudah dalam keadaan terurut.  Nilai i dan j di inisialisasi menjadi i = 1 dan j = 1. Kemudian lakukan pengulangan pada :  FOR k ← p TO r DO IF L[i] ≤ R[j] THEN A[k] ← L[i] i ← i + 1 ELSE A[k] ← R[j] j ← j + 1  Untuk menggabungkan array L dan R ke array A dalam keadaan terurut.  Didapatkan : o L[1] ≤ R[1], 12 ≤9 = False, maka A[0]= R[1]= 9 o L[1] ≤ R[2], 12 ≤∞= True, maka A[1]= L[1]= 12 A[0…1]= 9 12 1.2. MERGESORTA, 2, 3  Kemudian diperiksa apakah jika p r, 2 3, jika benar maka dihitung q = p + 2 = 2.  Kemudian dipanggil MERGESORTA, 2, 2, MERGESORTA, 3, 3 dan MERGEA, 2, 2, 3. A[2…3]= 24 2 1.2.1. MERGESORTA, 2, 2 Universitas Sumatera Utara Kemudian diperiksa apakah jika p r, 2 2, karena salah maka rekursif pada bagian ini selesai. 1.2.2. MERGESORTA, 3, 3 Kemudian diperiksa apakah jika p r, 3 3, karena salah maka rekursif pada bagian ini selesai. 1.2.3. MERGEA, 2, 2, 3  Sesuai dengan algoritma maka nilai:  n1 = q − p + 1= 1  n2 = r –q= 1.  Lalu buat dua buah array bernama L dan R dengan jumlah elemen  L[1 . . n1 + 1] yaitu L[1...2]  R[1 . . n2 + 1]yaitu R[1...2]  Perulangan pada:  FOR i ← 1 TO n1 DO L[i] ← A[p + i − 1]  nilai L[1] = A[2] = 24 L[1]= 24  Perulangan pada:  FOR j ← 1 TO n2 DO R[j ] ← A[q +j]  nilai R[1] = A[3] = 2 R[1]= 2  Kemudian ditambahkan L[n1 + 1] ← ∞ dan R[n2 + 1] ← ∞, sehingga L[2] = ∞ dan R[2] = ∞. Sehingga array L dan R berisi : Array L= 24 ∞ dan array R= 2 ∞ Kedua array tersebut sudah dalam keadaan terurut.  Nilai i dan jadi inisialisasi menjadi i= 1 dan j= 1. Kemudian lakukan pengulangan pada :  FOR k ← p TO r Universitas Sumatera Utara DO IF L[i] ≤ R[j] THEN A[k] ← L[i] i ← i + 1 ELSE A[k] ← R[j] j ← j + 1  Untuk menggabungkan array L dan R ke array A dalam keadaan terurut.  Didapatkan : o L[1] ≤ R[1], 24≤2= False, maka A[2] = R[1]= 2 o L[1] ≤ R[2], 24≤∞= True, maka A[3] = L[1]= 24 A[2…3]= 2 24 1.3. MERGEA, 0, 1, 3  Sesuai dengan algoritma maka nilai :  n1 = q − p + 1= 2  n2 = r – q= 2  Lalu buat dua buah array bernama L dan R dengan jumlah elemen  L[1 . . n1 + 1] yaitu L[1...3]  R[1 . . n2 + 1] yaitu R[1...3]  Perulangan pada:  FOR i ← 1 TO n1 DO L[i] ← A[p + i − 1]  nilai L[1] = A[0] = 9 dan L[2] = A[1] = 12. A[1…2]= 9 12  Perulangan pada:  FOR j ← 1 TO n2 DO R[j ] ← A[p + j]  Nilai R[1] = A[2] = 2 dan R[2] = A[3] = 24. A[1…2]= 2 24 Universitas Sumatera Utara  Kemudian ditambahkan L[n1 + 1] ← ∞ dan R[n2 + 1] ← ∞, sehingga L[2] = ∞ dan R[2] = ∞. Sehingga array L dan R berisi : Array L= 9 12 ∞ dan array R= 2 24 ∞ Kedua array tersebut sudah dalam keadaan terurut.  Nilai i dan jadi inisialisasi menjadi i= 1 dan j= 1. Kemudian lakukan pengulangan pada :  FOR k ← p TO r DO IF L[i] ≤ R[j] THEN A[k] ← L[i] i ← i + 1 ELSE A[k] ← R[j] j ← j + 1  Untuk menggabungkan array L dan R ke array A dalam keadaan terurut.  Didapatkan : o L[1] ≤ R[1],9≤2 = False, maka A[0]= R[1]= 2 o L[1] ≤ R[2], 9≤24= True, maka A[1]= L[1]= 9. o L[2] ≤ R[2], 12≤24= True, maka A[2]= L[2]= 12 o L[3] ≤ R[2], ∞≤24= False, maka A[3]= R[2]= 24 A[0…3]= 2 9 12 24 Universitas Sumatera Utara Jika digambarkan secara sederhana maka proses eksekusi algoritma merge sort adalah : Array unsorted A[0…3] 12 9 24 2 devide to sub-array A[0…1] 12 9 24 2 A[2 …3] devideto sub-array LR devide to Sub-array LR 12 9 24 2 L[ ] merge sort sub-array LR to array A R[ ] L[ ] merge sort sub-array LR to array A R[ ] 9 12 2 24 A[2 …3] Merge sort sub- array to array A Sorted Array A[0…3] 2 9 12 24 Hasil pengurutannya adalah array A dengan elemen seperti dibawah: A[0…3]= 2 9 12 24 3.8. Analisis Dan Running Time Merge Sort Merge sort selalu membagi setiap array menjadi dua sub-array hingga mencapai basis, sehingga kompleksitas dari algoritma merge sort, berlaku untuk semua kasus Worst Case = Best Case = Average Case.  Untuk memudahkan, kita anggap jumlah elemen arrayn adalah kelipatan 2, jadi setiap dilakukan divide pemecahan menjadi dua sub-array, kedua sub-array akan berukuran n2.  Basis : untuk n = 1, maka array tersebut sudah terurut dengan sendirinya.  Rekurens : untuk n 1, maka akan dilakukan langkah-langkah merge sort, yaitu:  Divide : Hitung nilai q yang merupakan rata-rata dari p + r, yang bernilai θ1. Universitas Sumatera Utara  Conquer : Secara rekursif menyelesaikan 2 sub-array, setiap sub-array berukuran n2, maka bernilai 2Tn2  Combine : Menggabungkan element dari sub-array ke dalam array dengan prosedur MERGE, bernilai θn.  Jumlahkan semua fungsi yang dihasilkan, sehingga dihasilkan rekurens : { }  Dari rekurens tersebut di ubah untuk mendapatkan kompleksitas waktu algoritma merge sort, sehingga Tn=On log n Catatan : log 2 n = 2 log n  Kompleksitas waktu tersebut dapat dijelaskan dari recursif tree berikut :  Array awal cn, yang memiliki dua sub-array, masing-masing bernilai Tn2: cn Tn2 Tn2  Kemudian sub-array tersebut di bagi lagi menjadi dua sub-sub-array, jadi bernilai Tn4 dan seterusya. cn cn2 cn2 Tn4 Tn4 Tn4 Tn4  Di dapatkan tinggi pohon rekursif adalah log n, dan memiliki sebanyak log n+ 1 level. Setiap level bernilai cn, sehingga cn log n+ cn.  Koefisien tidak perlu dimasukkan, sehingga kompleksitas waktunya menjadi: Tn= On log n Universitas Sumatera Utara

BAB 4 HASIL DAN PEMBAHASAN

4.1. Pendahuluan Aplikasi ini dibangun dengan menggunakan aplikasi pemrograman Visual Studio 2010. Adapun uji coba yang dilakukan menggunakan komputer dengan spesifikasi hardware dan software sebagai berikut : 1. Prosesor Core i7 2 GHz 2. RAM, 2 GB 3. Aplikasi Visual Studio 2010 4. OS Win 7 ultimate

4.2. Hasil Uji Coba

Pada penelitian ini dilakukan pengamatan pada 4 metode pengurutan yaitu selection sort, selection model insert, selection sort model new list dan merge sort. Diberikan nilai input Max Item Value 1000 dan 1000000, sedangkan nilai Max Item pada 10, 500 dan 1000 untuk masing-masing Max Item Value tersebut. Dan data yang diberikan untuk keempat kondisi tersebut juga sama. Berikut akan ditampilkan hasil pengamatan yang sudahdilakukan. 4.2.1 Pengurutan pada Max Item = 10 Pengurutan pada Max Item 10 dilakukan dengan membandingkan pada 2 nilai Max Item Value yaitu Max Item Value = 1000 dan 1000000. Universitas Sumatera Utara