2. Sorting (Pengurutan)
• Sorting adalah proses mengatur sekumpulan
objek menurut aturan atau susunan tertentu.
Urutan objek tersebut dapat menaik (ascending
= dari data kecil ke data lebih besar) atau
menurun (descending = dari data besar ke data
lebih kecil).
2
4. Metode Gelembung (Bubble Sort)
• Metode pengurutan gelembung (bubble sort)
diinspirasi oleh gelembung sabun yang ada di
permukaan air.
• Asumsi: berat jenis gelembung sabun lebih
ringan daripada berat jenis air maka gelembung
sabun akan selalu mengapung.
• Prinsip pengapungan ini juga dipakai pada
pengurutan gelembung.
4
5. Metode Gelembung
• Cara pengurutan elemen yang paling sederhana
• Menggunakan metode pembandingan dan pertukaran
• Tiap putaran, elemen yang bersebelahan akan
dibandingkan dan isinya akan ditukar jika nilainya tidak
berurut
• Pengurutan Ascending (urut naik)
Jika elemen sekarang lebih besar dari elemen
berikutnya maka kedua elemen tersebut ditukar
• Pengurutan Descending ( urut turun)
Jika elemen sekarang lebih kecil dari elemen berikutnya,
maka kedua elemen tersebut ditukar
5
7. banyaknya data: n
Contoh: Data diurutkan/disorting dari yang bernilai
besar ke kecil
Proses
step 1 : Periksalah nilai dua elemen mulai dari
urutan ke-n sampai urutan ke-1. Jika nilai kiri<kanan,
tukarkan kedua data itu.
step 2 : Periksalah nilai dua elemen mulai dari
urutan ke-n sampai urutan ke-2. Jika nilai kiri<kanan,
tukarkan kedua data itu.
step n-1 : Periksalah nilai dua elemen mulai dari
urutan ke-n sampai urutan ke-n-1. Jika nilai
kiri<kanan, tukarkan kedua data itu.
Metode Gelembung: Algoritma
(Descending)
7
8. 7 4 5 8 10Awal
Metode Gelembung:
tahap demi tahap
9. 7 4 5 8 10
7 4 5 8 10Step-1
Awal
Metode Gelembung:
tahap demi tahap
10. 7 4 5 8 10
7 4 5 10 8Step-1
Awal
Metode Gelembung:
tahap demi tahap
11. 7 4 5 8 10
7 4 10 5 8Step-1
Awal
Metode Gelembung:
tahap demi tahap
12. 7 4 5 8 10
7 10 4 5 8Step-1
Awal
Metode Gelembung:
tahap demi tahap
13. 7 4 5 8 10
10 7 4 5 8Step-1
Awal
Metode Gelembung:
tahap demi tahap
14. 7 4 5 8 10
10 7 4 5 8
10 7 4 5 8
Step-1
Awal
Step-2
Metode Gelembung:
tahap demi tahap
15. 7 4 5 8 10
10 7 4 5 8
10 7 4 8 5
Step-1
Awal
Step-2
Metode Gelembung:
tahap demi tahap
16. 7 4 5 8 10
10 7 4 5 8
10 7 8 4 5
Step-1
Awal
Step-2
Metode Gelembung:
tahap demi tahap
17. 7 4 5 8 10
10 7 4 5 8
10 8 7 4 5
Step-1
Awal
Step-2
Metode Gelembung:
tahap demi tahap
18. 7 4 5 8 10
10 7 4 5 8
10 8 7 4 5
10 8 7 4 5
Step-1
Awal
Step-2
Step-3
Metode Gelembung:
tahap demi tahap
19. 7 4 5 8 10
10 7 4 5 8
10 8 7 4 5
10 8 7 5 4
Step-1
Awal
Step-2
Step-3
Metode Gelembung:
tahap demi tahap
20. 7 4 5 8 10
10 7 4 5 8
10 8 7 4 5
10 8 7 5 4
Step-1
Awal
Step-2
Step-3
Metode Gelembung:
tahap demi tahap
21. 7 4 5 8 10
10 7 4 5 8
10 8 7 4 5
10 8 7 5 4
10 8 7 5 4
Step-1
Awal
Step-2
Step-3
Step-4
Metode Gelembung:
tahap demi tahap
22. Metode Gelembung berakhir…
Jika seluruh array telah diperiksa dan tidak ada
pertukaran lagi yang bisa dilakukan, serta
tercapai perurutan yang telah diinginkan
22
23. Metode Seleksi (Selection Sort)
Metode pengurutan ini disebut pengurutan maksimum /
minimum karena didasarkan pada pemilihan elemen
maksimum atau minimum kemudian
mempertukarkan elemen maksimum/minimum
tersebut dengan elemen terujung larik (elemen ujung
kiri atau elemen ujung kanan).
Selanjutnya elemen terujung itu kita “isolasi” dan tidak
diikut sertakan pada proses selanjutnya. Karena
proses utama dalam pengurutan adalah pemilihan
elemen maksimum / minimum, maka metode ini
disebut metode seleksi (selection sort).
23
24. Metode Seleksi: Algoritma
(Ascending)
• Langkah 1: Tentukan Harga Maksimum didalam L1[1..N]
Pertukarkan harga maksimum dng L[N]
• Langkah 2: Tentukan Harga Maksimum didalam L1[1..N-1]
Pertukarkan harga maksimum dng L[N-1]
• Langkah 3: Tentukan Harga Maksimum didalam L1[1..N-2
Pertukarkan harga maksimum dng L[N-2]
• ……..
• Langkah N-1: Tentukan Harga Maksimum didalam L1[1..2]
Pertukarkan harga maksimum dng L[2].
24
25. Metode Seleksi: Pseudocode
SELECTIONSORT(A)
1 for i← 1 to length[A]-1
2 min = i;
3 do for j ← i+1 to length[A]
4 do if A[j] < A[min]
5 min = j;
6 exchange A[min] ↔ A[i]
Prinsip kerja:
Dari elemen sebanyak n,
Carilah elemen terkecil dari array A, dan swap-lah elemen terkecil
tersebut dengan elemen pertama (A[1] ).
Carilah elemen terkecil kedua dari array A, dan swap-lah elemen
tersebut dengan elemen kedua (A[2])
Ulangi sampai n-1 elemen pertama dari array A
27. Metode Sisipan (Insertion Sort)
• Dari namanya, pengurutan sisip (insertion sort)
adalah metode pengurutan dengan cara
menyisipkan elemen larik pada posisi yang
tepat.
• Pencarian posisi yang tepat dilakukan dengan
pencarian beruntun. Selama pencarian posisi
yang tepat dilakukan pergeseran elemen larik.
27
28. Metode Sisipan: Pseudocode
INSERTION-SORT(A)
1 for j←2 to length[A]
2 do key←A[j]
3 Insert A[j] ke sekuens yang sudah disorting
A[1…j-1]
4 i← j-1
5 while i>0 and A[i] > key
6 do A[i+1] ←A[i]
7 i ← i -1
8 A[i+1] ←key
28
29. Metode Sisipan: Algoritma
(Ascending)
• Andaikan: L[1] dianggap sudah 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 L[2] pada K.
• Langkah 3: L[3] harus dicari tempatnya yang tepat pada L[1..3]
dengan cara menggeser elemen L[1..2] ke kanan bila
L[1..2] lebih besar dari L[3]. Misalkan posisi elemen
yang tepat adalah K sisipkan L[3] pada K.
29
30. Metode Sisipan: Algoritma
(Ascending)
• Langkah 4: L[4] harus dicari tempatnya yang tepat pada L[1..4]
dengan cara menggeser elemen L[1..4] ke kanan bila
L[1..4] lebih besar dari L[4]. Misalkan posisi elemen
yang tepat adalah K sisipkan L[4] pada K.
• Langkah N: L[N] harus dicari tempatnya yang tepat pada L[1..N]
dengan cara menggeser elemen L[1..N ke kanan bila
L[1..N] lebih besar dari L[N]. Misalkan posisi elemen
yang tepat adalah K sisipkan L[N] pada K.
30
31. Metode Sisipan: Contoh (Ascending)
31
5 2 4 6 1 3
1 2 3 4 5 6
1
2
3
4
5
6
2 5 4 6 1 3
2 4 5 6 1 3
2 4 5 6 1 3
1 2 4 5 6 3
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
6
Elemen L1 dianggap sudah terurut
1 2 3 4 5 6
Cari posisi yang tepat untuk L[2] pada L[1..2]
Cari posisi yang tepat untuk L[3] pada L[1..3]
Cari posisi yang tepat untuk L[4] pada L[1..4]
Cari posisi yang tepat untuk L[5] pada L[1..5]
Cari posisi yang tepat untuk L[6] pada L[1..6]
SELESAI
32. Metode Shell
• Penemu : Donald Shell pada tahun 1959
• Metode perbandingan dan pertukaran
• Perbandingan dimulai dari separuh list yang
akan disortir dengan separuh bagian yang lain.
• Metode ini mengurutkan data dengan cara
membandingkan suatu data dengan data lain
yang memiliki jarak tertentu – sehingga
membentuk sebuah sub-list, kemudikan
dilakukan penukaran bila diperlukan
32
33. Metode Shell
• Contoh :
– Jika terdapat 100 elemen, diperbandingkan elemen 1
dan elemen 51, elemen 2 dan elemen 52 dst.
Selanjutnya algoritma akan membandingkan elemen
1 dan elemen 26, elemen 2 dan elemen 27 dst.
33
42. Metode Merge
• Metode penggabungan biasanya digunakan
pada pengurutan berkas.
• Kunci dari Merge Sort adalah menggabung dua
berkas terurut menjadi sebuah kesatuan
Asumsi: ada 2 berkas X (x1x2…xm) dan
Y(y1y2…yn) maka hasilnya adalah Z(z1z2…zm+n)
• Contoh:
L1 = { 3 8 9 } L2 = { 1 5 7 }
merge(L1, L2) = { 1 3 5 7 8 9 }
42
43. Merge Sort: Algoritma
Diberikan berkas L dengan panjang k:
• If k == 1 berkas sudah terurut
• Else:
– Merge Sort sisi kiri (0 thru k/2)
– Merge Sort sisi kanan (k/2+1 sampai k)
– Merge sisi kanan dengan sisi kiri