Pertemuan 11 SORTING Operasi Pengurutan (Sorting) adalah operasi yang sangat banyak dilakukan dalam ‘Bussiness Data Processing’. Dalam hal ini pengurutan yang dilakukan adalah secara Ascending (menaik dari kecil ke besar) Macam-macam Sorting (Pengurutan) : 1. SELECTION SORT 2.BUBBLE SORT 3. MERGE SORT 4. QUICK SORT 5. INSERTION SORT 6. HEAP SORT 1. SELECTION SORT Metode pengurutan Selection Sort, Prosedur atau Algoritmanya adalah sbb : 1. Pengecekan dimulai dari data ke –1 sampai dengan data ke – n 2. Tentukan bilangan dengan index terkecil dari data bilangan tersebut 3. Tukar bilangan dengan index terkecil tersebut dengan bilangan pertama (I = 1) dari data bilangan tersebut 4. Lakukan langkah 2 dan 3 untuk bilangan berikut (I = I+1) sampai didapatkan urutan yang optimal. Prpsedur progaram selectioa sort (Dengan program C++) Void selection_sort (int data[]) { for(int i=0;i<n-1;i++){ pos = i; for (int j=i+1;j<n;j++){ if(data[ j ] < data [ [pos] = j; // ascending } if (pos) != 1) tukar ( &data [poa], &data[i]; } } 2. BUBBLE SORT Metode pengurangn bubble solt mempunyai Algoritma atau prosedur sebagai berikut : 1. Pengecekan dimulai dari dta ke -1 sampai dengan data ke –n 2. Bandingkan dta ke-n dengan data seberumnya (n-1) jika lebih kecil maka tukar bil. Tsb dengan dta yang ada didepannya (seberomnya)satau persatua (n-1,n-2,n-,3…..dst) 3.lakukan langkah ke- 2 sampai didapatkan urutan yang aptimal Prosedur Pro gram Bubble So rt (Dengan program C++) Void hubb sort (int data []) for (int i=1;<n;i++){ for(int j=n-1;ji;j--){ if(dta [ j ] ,&data[ j ]-1]); //ascending } } } 3. MERGE SORT Menggunaka Metode Iteratif Merge sortmempunyai Algoriyma atau prosedur sebagai belikut : 1. Kelompok detet bilangan kedalam 2 bagian, 4 bagian, 8 bagian ….dst… 2.Urutan secara langsung bilanga dalam kelompok tersebut 3.lakukan langkah di atas untuk kondisi bilangan yang lain sampe didapaatkan urutan yang optomal Prosedur Program Merge Sort (Dengan program C++) Int main (void) { int ar[100]; int i, v, len; for (1=0; i<100; i++) { cout << “enter a number (_! To quit): “; cin >> v; if (v< 0) break; ar[ I ] = v; } len = I; cout << “main: before sort :\n”; for (i=0; i<len; i++) { coud << “mian: ar(“<<ar[ i] <<endl; } mergesort ms (ar, len); cout << “ main : after sort :\n”; for (i=0; i<len; i++) { cout <<“main: ar[ “ << I <<] = “<< ar[ i ] <<endl } 4. QUICK SORT Sangat baik untuk tabel yang sangat besar. Algolithma atau prosedur Quick sort adalah sbb: 1.tentukan bilangan yang dinyatakan sebagaIBATAS bawah (Lower B oun (I =1 )) dan bilngan yang dinyatakan sebagai batas atas (Upper Bound(I=N)) 2. Syarat pemindahan adalah LB > UB , dengan meliat perbandingan antra UB (awal bilangan) dan LB (akhir bilangan 3. Jika LB > UB lakukan pertukaran antara kedua bilangan tersebut , jika tidak perpindahan LB (I =I +1 I =1 + 2,…) kebilangan selanjutnya dan bandingkan kembali dengan UB(I=N, I = N – 1,I = N – 2,…..) 4. Lakukan langkah 2 dan langkah 3 untuk bilangan selanjutnya sampai didapatkan urutan yang optimal. Prosedur Program Quick (Dengan Program C++) # include <stdio.h> # include <stdlid.h> # include <math.h> # include <time.h> # include <codecogs/array/sort/quick_sort.h> Int main () Double vals [25] ; Int n =25 ; Srand (( unsigned int ) time (NULL)) ; For (int i = 0; I <n; i++) vals [i] = (( double) n*rand ()) /RAND_MAX; printf (“\nArray to be sorted:\n”) ; for (int i=0; i<n; i++) printf (“,vals [ i ] ) ; perintf (“\n”) Array: :sort: : quicksort<double>(vals, n) ; perintf (“sorted array:\n”) ; For (int i=0 i<n; i++) Printf (“%3.0f “, vals (i) ; perintf (“\n”) ; Ruturn 0; 5. INSERTION SORT Digunakan untuk melakukan insert suatu record dalam record-record yang telah diurutan . Metode pengurangan Bubble sort mempunyai Algolitma atau prosedur sebagai belikut 1. Pengecekan dimulai dari ke -1 sampe dengandata ke –n 2. Pengurangan dilakuakn cara mambabdingkan data ke- I (damana I dimulai dari ke-2 sampe dengan data yang terakhir. 3. Bandingkan data ke – I tersebut denan data sebelumnya (I-1), jika lebih kecil maka data tersebut dapat disisipkan ke data awal (depan) sesuai dengan posisi yang seharusny. 4. Lakukan langkah ke- 2 da 3 untuk bilangan selajutya (I =+1) sampai di dapatkan urutan yang optimal. Prosedur Program Insertion Sort (Dengan program C++) voitd insertion_sort(int data [] ){ int temp; for (int i=1<n;i++){ temp =data [i]; j = I -1; while(data[j]>temp && j>=0){ data [j+1] =data[j]; j--; } } 6. HEAP SORT Tujuan dan heap sort adalah mencari bilangan terbesar darai data dalam deret bilangan. Langkah-langkah /Algolitma dalam Heap adalah sebagai berikut: 1 Buat (create) sebuah Heap dengan data-data yang dudah ditrntukan . o bandingkan heap dengan elemen selanjutnya (next elemen, jika next elemen> Heap, maka jadi next elemen tersebut sebagai sebuah Root. o Kerjakan cabang kiri terkebih dahulu, kemudian kerjakan cabang kanan Procedure Heap_sort(K<N) Algolitma : 1. Bentuk pohon heap dengan prosedur yang ada 2. Laksanakan Sort ulanagi sampi dengan langkah 10;Q=N,N-1,……..,2 3. Tukrkan nilai record : K[I] < ---- > K[Q] 4. Belikan harga awal I< ---1 ;Key< --- K[I] < ----- >K[Q] 5. Dapatkan indeks dari harga terbesar anak dari record baru if J+1 < Q Then ifK [J+1]>K[J] Then J:=J+1 6. Buat kembali heap baru Ulangi sampi langkah 10 apabila J<Q-!dan K[J]> Key 7. Tukarkan harga record : K[I] < ---- > K[J] 8. Dapatkan anak kiri berikutnya I < ---- J; J < ---- Q +1 9. Dapatkan indeks dari anak dengan harga terbesar berikutnya if J + 1 <Q Then if K[J+1]>K[J] Then J=J+1 Else if J > N Then J=N 9. Copykan record kedalam tempatnya yang cocok K[I] < ---- Key 1. ruturn Contoh HEAP SORP : 15,10,22.3.8 15 15 10 22 10 22 15 10 3 15 8 Latihan Soal Struktur Data (Pertemuan 11) 1. Tehnik pengurutan data yang paling tepat digunakan untuk tabel data yang sangat besar adalah… a. Heap Sort c. Quick Sort b. Insertion Sort d. Sequential Sort 2. Metode pengurutan data yang bertujuan untuk mengurutkan bilangan secara Descending/decreasing dalam deret bilangan, adalah : a. Merge Sort c. Insertion Sort b. Bubble Sort d. Heap Sort 3. Jika urutan data pada langkah pertama adalah : 5 8 2 10 3 maka urutan data secara ascending pada langkah berikutnya dengan metode Insertion sort adalah … a. 2 8 5 10 3 c. 2 3 5 8 10 b. 2 3 5 10 8 d. 2 5 8 10 3 4. (1) Tentukan batas bawah (LB) dan batas atas (UB) (2) Bila LB>UB, maka data ditukar Pernyataan diatas adalah langkah pengurutan data dengan metode : a. Bubble c. Insertion b. Merge d. Quick 5. Jika diketahui urutan data 26 18 21 6 12, bila urutan data pada langkah berikutnya menjadi 18 26 6 21 12, maka metode sorting yang digunakan adalah … a. Quick c. Selection b. Buble d. Merge SEKIAN Pinang muda dibelah dua Anak burung mati diranggah Dari muda sampai ke tua Ajaran baik jangan diubah