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
MACAM-MACAM METODE PENGURUTAN (SORTING)
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 3
•
Bubble Sort
•
Selection Sort
•
Insertion Sort
•
Shell Sort
•
Merge Sort
•
Radix Sort
•
Quick Sort
•
Heap Sort
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]
ATURAN BUBLE SORT
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 5
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
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
ATURAN BUBLE SORT (CON’T)
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 7
22 10 15
3
8
2
Diketahui
Keterangan:
• Pengecekan dilakukan pada data
paling akhir, kemudian
dibandingkan dengan data di
depannya
• Jika data di depannya lebih
besar, maka akan ditukar
Proses kedua, pengecekan data dilakukan dengan data kedua,
karena data pertama sudah pasti paling kecil
11/10/2017
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 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
DESKRIPSI BUBBLE SORT
CONTOH
11/10/2017
KESIMPULAN BUBBLE SORT
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 13
•
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.
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
ALGORITMA SELECTION SORT
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 15
Langkah 1 Tentukan harga maksimum di dalam L1[1..N]
Pertukarkan harga maksimum dengan L[N]
Langkah 2 Tentukan harga maksimum di dalam L1[1..N-1]
Pertukarkan harga maksimum dengan L[N-1]
Langkah 3 Tentukan harga maksimum di dalam L1[1..N-2]
Pertukarkan harga maksimum dengan L[N-2]
Langkah N-1 Tentukan harga maksimum di dalam L1[1..2]
Pertukarkan harga maksimum dengan L[N-2]
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/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 17
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:
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 14 10 7 25 30
0 1 2 3 4 5
11 7 10 14 25 30
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:
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
10 7 11 14 25 30
CONTOH
11/10/2017
Untuk algoritma Pengurutan Minimum
caranya sama persis dengan maksimum
hanya saja yang ditukar adalah nilai yang
KESIMPULAN
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 21
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
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
ALGORITMA PENGURUTAN SISIP
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 23
• Andaikan L[1] dianggap sudah pada tempatnya
Langkah 2 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
Langkah 3 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
Langkah 4 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
Langkah N-1 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
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
11/10/2017
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 27
#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*/
/* 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]<<" "; }
KESIMPULAN
11/10/2017
UNIVERSITAS AMIKOM YOGYAKARTA | lilisdfarida@amikom.ac.id 29