SORTING Struktur Data S1 Sistem Informasi Ld.Farida
INTRO Sorting (Pengurutan) diartikan sebagai penyusunan kembali sekumpulan objek ke dalam urutan tertentu Tujuan: Mendapatkan kemudahan dalam pencarian anggota dari suatu himpunan Mempercepat dalam mengetahui data terbesar/terkecil Proses yang terjadi pada pengurutan adalah sebagai berikut: Perbandingan Data Pertukaran Data 2
MACAM-MACAM METODE PENGURUTAN (SORTING) Bubble Sort Selection Sort Insertion Sort Shell Sort Merge Sort Radix Sort Quick Sort Heap Sort 3
BUBLLE SORT / GELEMBUNG Metode ini terinspirasi oleh gelembung sabun yang terdapat di permukaan air Berat jenis gelembung lebih ringan dibanding berat jenis air, menyebabkan gelembung sabun akan selalu mengapung Prinsip pengapungan digunakan untuk pengurutan Elemen dengan nilai paling kecil diapungkan, diangkat ke atas (atau ujung paling kiri) melalui proses pertukaran Proses pengapungan dilakukan sebanyak N kali langkah Pada langkah ke-1, larik[1..n] akan terdiri menjadi dua bagian: Bagian yang sudah terurut, yaitu L[1]... L[i] Bagian yang belum terurut, yaitu L[i+1]... L[n]. 4
ATURAN BUBLE SORT Mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar, jika pengurutan ascending. Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar, jika pengurutan descending. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan 5
ALGORITMA BUBBLE SORT Langkah 1 Mulai elemen K=N, N-1,...,2 Bandingkan L[k] dengan L[k-1] Jika L[k] < L[k-1], maka tukarkan L[k] dengan L[k-1] Pada akhir langkah 1, elemen L[1] berisi harga minimum pertama Langkah 2 Mulai dari elemen K=N, N-1,...,3 Bandingkan L[k] dengan L[k-1] Jika L[k] < L[k-1], maka tukarkan L[k] dengan L[k-1] Pada akhir langkah 2, elemen L[2] berisi harga minimum kedua Dan larik L[1...2] terurut, sedangkan L[3...N] belum terurut Langkah 3 Mulai dari elemen k=n, N-1...,4 Bandingkan L[k] dengan L[k-1] Jika L[k] < L[k-1], maka tukarkan L[k] dengan L[k-1] Pada akhir langkah 3, elemen L[3] berisi harga minimum ketiga Dan larik L[1...3] terurut, sedangkan L[4...N] belum terurut Langkah N-1 Mulai dari elemen k=n Bandingkan L[k] dengan L[k-1] Jika L[k] < L[k-1], maka tukarkan L[k] dengan L[k-1] Pada akhir langkah N-1, elemen L[N-1] berisi harga minimum ke-(n-1) Dan larik L[1...N-1] terurut, sedangkan L[N] tidak perlu diurutkan lagi UNIVERSITAS AMIKOM YOGYAKARTA LILISDFARIDA@AMIKOM.AC.ID 11/10/2017 6
ATURAN BUBLE SORT (CON T) Diketahui 22 10 15 3 8 2 Keterangan: Pengecekan dilakukan pada data paling akhir, kemudian dibandingkan dengan data di depannya Jika data di depannya lebih besar, maka akan ditukar 7
Proses kedua, pengecekan data dilakukan dengan data kedua, karena data pertama sudah pasti paling kecil 8
9
DESKRIPSI BUBBLE SORT Menaik for i 1 to N-1 do for i 1 to N-1 do if L[k] < L[k-1] then tukar(l[k],l[k-1]) endif endfor endfor Menurun for i 1 to N-1 do for i 1 to N-1 do if L[k] > L[k-1] then tukar(l[k],l[k-1]) endif endfor endfor 10
CONTOH 11
CONTOH 12
KESIMPULAN BUBBLE SORT Pengurutan dengan metode bubble sort kurang efisien Terlalu banyak proses penukaran yang dilakukan pada setiap langkah Membutuhkan banyak waktu serta proses lebih lama Tidak direkomendasikan untuk dipakai. Note: metode ini mudah dipahami dan sederhana 13
SELECTION SORT (MAKSIMUM/MINIMUM) Metode pengurutan dengan proses menyisipkan elemen larik Ide dasarnya memilih elemen maksimum/minimum dari larik, kemudian menempatkan max/min pada awal atau akhir larik (elemen terujung) Elemen terujung di isolasi dan tidak disertakan pada proses selanjutnya Proses selanjutnya untuk elemen larik yang tersisa, memilih max/min dan melakukan hal yang sama seperti proses di atas Proses memilih nilai max/min dilakukan pada setiap langkah. Larik berukuran N, maka jumlah langkah adalah N-1 14
ALGORITMA SELECTION SORT Langkah 1 Langkah 2 Langkah 3 Langkah N-1 Tentukan harga maksimum di dalam L1[1..N] Pertukarkan harga maksimum dengan L[N] Tentukan harga maksimum di dalam L1[1..N-1] Pertukarkan harga maksimum dengan L[N-1] Tentukan harga maksimum di dalam L1[1..N-2] Pertukarkan harga maksimum dengan L[N-2] Tentukan harga maksimum di dalam L1[1..2] Pertukarkan harga maksimum dengan L[N-2] # Elemen yang tersisa adalah L[1], tidak perlu diurutkan karena hanya satu-satunya 15
CONTOH SELECTION SORT Contoh : Tinjau larik dengan N=6 buah elemen dibawah ini yang belum terurut menjadi diurut naik. 30 14 25 7 10 11 0 1 2 3 4 5 Langkah 1 Cari elemen maksimum di dalam larik L[0..5] maksimal L[0] = 30 Tukar maks dengan L[N], hasil akhir langkah 1: 11 14 25 7 10 30 0 1 2 3 4 5 16
Langkah 2 Cari elemen max di dalam larik L[0..4] Max = L[2] = 25 Tukar nilai max dengan L[N-1], N=4, sehingga diperoleh: 11 14 10 7 25 30 0 1 2 3 4 5 Langkah 3 Cari elemen max di dalam larik L[0..3] Max = L[1] = 14 Tukar nilai max dengan L[N-1], N=3, sehingga diperoleh: 11 7 10 14 25 30 0 1 2 3 4 5 17
Langkah 4 Cari elemen max di dalam larik L[0..2] Max = L[0] = 0 Tukar nilai max dengan L[N-1], N=2, sehingga diperoleh: 10 7 11 14 25 30 0 1 2 3 4 5 Langkah 5 Cari elemen max di dalam larik L[0..1] Max = L[0] = 10 Tukar nilai max dengan L[N-1], N=1, sehingga diperoleh: 7 10 11 14 25 30 0 1 2 3 4 5 Selesai! Larik sudah terurut 18
CONTOH 19
Untuk algoritma Pengurutan Minimum caranya sama persis dengan maksimum hanya saja yang ditukar adalah nilai yang minimum bukan maksimum 20
KESIMPULAN dibandingkan dengan pengurutan gelembung (bubble sort) pengurutan dengan metode selection sort (maksimum/minimum) ini memiliki kinerja yang lebih baik. Operasinya pertukaran hanya sekali saja dilakukan pada setiap langkah sehingga waktu pengurutan dapat lebih ditekan. Metode ini direkomendasikan untuk dipakai. 21
PENGURUTAN SISIP / INSERTION SORT Metode pengurutan dengan menyisipkan elemen larik pada posisi yang tepat Pencarian posisi yang tepat dilakukan dengan pencarian beruntun Selama proses pencarian posisi yang tepat dilakukan pergeseran larik 22
ALGORITMA PENGURUTAN SISIP Andaikan L[1] dianggap sudah pada tempatnya Langkah 2 Langkah 3 Langkah 4 Langkah N-1 L[2] harus dicari tempatnya yang tepat pada L[1..2] dengan cara menggeser elemen L[1] ke kanan bila L[1] lebih besar dari L[2] Misalkan posisi elemen yang tepat adalah K sisipkan pada L[2] pada K L[3] harus dicari tempatnya yang tepat pada L[1..3] dengan cara menggeser elemen [l1..3] ke kanan bila L[1..3] lebih besar dari L[3] Misalkan posisi elemen yang tepat adalah K sisipkan pada L[3] pada K L[4] harus dicari tempatnya yang tepat pada L[1..4] dengan cara menggeser elemen [l1..4] ke kanan bila L[1..4] lebih besar dari L[4] Misalkan posisi elemen yang tepat adalah K sisipkan pada L[4] pada K L[N] harus dicari tempatnya yang tepat pada L[1..N] dengan cara menggeser elemen [l1..n] ke kanan bila L[1..N] lebih besar dari L[N] Misalkan posisi elemen yang tepat adalah K sisipkan pada L[N] pada K 23
Pencarian posisi metode ini dimulai dari data kedua, sampai dengan data terakhir, karena data pertama dianggap sudah berada pada posisi yang tepat. Jika ditemukan data yang lebih kecil, akan ditempatkan (disisipkan/di insert kan) di posisi yang seharusnya 24
25
26
#include <iostream> using namespace std; main(){ int i,j,k, temp; int L[5]; L[1]=1; L[2]=25; L[3]=10; L[4]=30; L[5]=2; for(k=2;k<=5;k++){ temp=l[k];/* ambil elemen L[k] supaya tidak tertimpa penggeseran*/ 27
/* Cari Posisi Yang tepat dalam L[1..k-1] sambil menggeser*/ j=k-1; while(temp<=l[j]) { L[j+1]=L[j]; j--; cout<<l[j+1]<<endl; } if((temp >= L[j]) ( j=1)){ L[j+1]=temp; /*posisi yg tepat untuk L[k] ditemukan*/ }else{ L[j+1]=L[j]; L[j]=temp; } } for(i=1;i<=5;i++){ cout<<l[i]<<" "; } return 0; } 28
KESIMPULAN Kelemahan metode sisip terletak pada banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik. Untuk larik yang jumlahnya besar ini tidak praktis. Dari ketiga metode tersebut, pengurutan maksimum/minimum memiliki kinerja yang terbaik. 29
Terima Kasih 30