Pertemuan 11

advertisement
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
Download