3. Metode Pohon Biner (Binary Sort)
a. Ambil data pertama dan tempatkan sebagai root
b. Ambil data ke dua dan bandingkan dengan root, bila
nilai data kedua lebih kecil dari root maka tempatkan
sebagai anak kiri root, bila lebih besar tempatkan
sebagai anak kanan root
c. Ambil data berikutnya, bandingkan dengan root bila
lebih kecil dari root bandingkan dengan anak kiri , bila
lebih kecil maka akan menjadi anak kiri dari anak kiri
root. begitu juga untuk anak kanannya
d. Lakukan langkah c sampai data terakhir
e. Urutan pembacaannya (bila ascending ) adalah anak
kiri yang paling kiri, root, anak kanan paling kiri, anak
kanan
3
4. Metode Pohon Biner: Pseudocode
def treesort ()
read item
root = makebt(null, item, null)
while not end of data
read item
insert(root, item)
end while
inorder(root)
end
4
5. Urutkan secara ascending data : 8,6,4,5, 2,10,7
8
6
4
2
10
7
Hasil : 2, 4, 5, 7, 8, 10
Anak kiri yang paling kiri – root – anak kanan yang
paling kiri – root – anak kanan – root - dst
5
Metode Pohon Biner: Contoh 1
6. Metode Pohon Biner: Contoh 2
Urutkan huruf M, A, R, J, K, S, V.
Penyisipan menghasilkan
M
/
A R
J S
K V
Traverse in order => A J K M R S V 6
7. Metode Radix (Radix Sort)
• Radix sort biasa digunakan pada basis data
yang akan diurutkan melalui kunci yang berantai
• misalnya akan diurutkan menurut tanggal lahir, maka
harus dilakukan sort 3 langkah, pertama menurut
tahun, kemudian menurut bulan, dan terakhir menurut
tanggal
• Pada sortir angka, maka radix sort diterapkan
pada setiap digit
7
8. Metode Radix
• Radix sort mengurutkan data berdasarkan posisi
digit dalam angka atau karakter dalam string.
• Pengurutan bisa dilakukan dari posisi digit
terakhir/terkanan (LSD-least significant digit)
atau digit awal/terkiri (MSD-Most significant
digit).
• Radix sort digunakan untuk mengurutkan data
sebagai kelompok karakter atau string.
8
9. Metode Radix: Contoh 1
• Sebagai gambaran radix sort dapat digunakan untuk
mengurutkan string sebagai berikut:
ABC, XYZ, BWZ, AAC, RLT, JBX, RDT, KLT, AEO, TLJ
• Untuk mengurutkannya pertama diurutkan
berdasarkan karakter terakhir pada string dan
dikelompokkan berdasarkan karakter tersebut.
(ABC, AAC) (TLJ) (AEO) (RLT, RDT, KLT) (JBX) (XYZ,
BWZ)
• Kombinasikan hasil pengelompokan:
ABC, AAC, TLJ, AEO, RLT, RDT, KLT, JBX, XYZ, BWZ
9
10. Metode Radix: Contoh 1
• Selanjutnya kelompokkan berdasarkan urutan
abjad karater yang tengah
(AAC) (ABC, JBX) (RDT) (AEO) (TLJ, RLT, KLT)
(BWZ) (XYZ)
• Kombinasikan kembali hasilnya:
AAC, ABC, JBX, RDT, AEO, TLJ, RLT, KLT, BWZ, XYZ
10
11. Metode Radix: Contoh 1
• Kemudian kelompokan berdasarkan abjad
pertama dari string, diperoleh:
(AAC, ABC, AEO) (BWZ) (JBX) (KLT) (RLT, RDT)
(TLJ) (XYZ)
• Terakhir gabungkan hasil pengelompokan
sehingga diperoleh:
AAC, ABC, AEO, BWZ, JBX, KLT, RLT, RDT, TLJ, XYZ
11
12. Metode Radix: Contoh 2
• Disamping itu radix sort dapat juga digunakan untuk
mengurutkan bilangan.
– Contoh: Radix sort pada array suatu bilangan 4 digit
bilangan interger:
• Data awal:
0123, 2154, 0222, 0004, 0283, 1560, 1061, 2150
12
16. Metode Radix: Contoh 2
Sort berdasarkan digit ke empat dari kanan:
[0] – (0004, 0123, 0222, 0283)
[1] – (1061, 1560)
[2] – (2150, 2154)
[3] – ( )
[4] – ( )
[5] – ( )
[6] – ( )
[7] – ( )
[8] – ( )
[9] – ( )
Kombinasikan hasilnya dan tulis ke penampung awal:
0004, 0123, 0222, 0283, 1061, 1560, 2150, 2154
16
17. Metode Cepat (Quick Short)
Teknik Quick-sort berbasis teknik divide-and-
conquer, sbb:
◦ Divide : array A[p..r] dibagi menjadi A[p..q] dan A[q+1
..r] sehingga setiap elemen A[p..q] lebih kecil dari atau
sama dengan setiap elemen A[q+1..r]
◦ Conquer : subarray A[p..q] dan A[q+1..r] juga di-sort
menurut Quick-Sort
◦ Combine : pada akhirnya A[p..r] akan ber-urutan
17
18. Metode Cepat: Algoritma
Diberikan sebuah array dengan n elemen (misal
integer) :
• If array hanya berisi satu elemen, return
• Else
– Ambil satu elemen untuk digunakan sebagai pivot
(poros).
– Partisi elemen menjadi dua sub-array:
• Elemen kurang dari atau sama dengan nilai pivot
• Elemen lebih dari nilai pivot
– Quicksort dua sub-array
– Return hasil
18
19. Contoh
• Array dari n integer berikut ini akan diurutkan:
19
40 20 10 80 60 50 7 30 100
21. Partisi Array
Berdasarkan pivot yang dipilih, partisi elemen
array sehingga menjadi:
1. Satu sub-array yang berisi elemen-elemen >= pivot
2. Satu sub-array yang berisi elemen-elemen < pivot
Sub-array disimpan dalam array data asli.
Akan dilakukan looping dalam partisi, tukar elemen
di bawah/di atas nilai pivot.
21
48. Metode Heap
Proses Heap-Sort dapat dijelaskan sbb:
1. Representasikan Heap dengan n elemen dalam
sebuah array A[n]
2. Elemen root tempatkan pada A[1]
3. Elemen A[2i] adalah node kiri dibawah A[i]
4. Elemen A[2i+1] adalah node kanan dibawah A[i]
5. Contoh: array A=[16 14 10 8 7 9 3 2 4 1]
mewakili binary-heap sbb:
6. Ambil nilai root (terbesar) A[1..n-1] dan pertukarkan
dengan elemen terakhir dalam array, A[n]
7. Bentuk Heap dari (n-1) elemen, dari A[1] hingga A[n-1]
8. Ulangi langkah 6 dimana indeks terakhir berkurang
setiap langkah. 48
49. Metode Heap (Heap Sort)
• Binary heap digunakan sebagai struktur data dalam
algoritma Heap-Sort
• Sebagaimana diketahui, ketika suatu Heap
dibangun maka kunci utamanya adalah: node atas
selalu mengandung elemen lebih besar dari kedua
node dibawahnya
• Apabila elemen berikutnya ternyata lebih besar dari
elemen root, maka harus di “swap” dan lakukan:
proses “heapify” lagi
• Root dari suatu Heap sort mengandung elemen
terbesar dari semua elemen dalam Heap
49
50. Metode Heap: Algoritma
Heapsort terdiri dari 2 langkah algoritma:
• Step 1. Bentuk Heap – O(n)
– Bentuk pohon biner dengan N elemen sebagai input,
pastikan properti struktur heap tersimpan, dengan
kata lain buat pohon biner komplit.
– Heapify pohon biner dan pastikan memenuhi properti
Heap Order.
• Step 2. Lakukan operasi n deleteMax– O(log(n))
– Hapus elemen maksimum pada heap – yang berada
pada root, dan pindahkan elemen ini ke bagian akhir
array yang sudah terurut.
50
51. Metode Heap: Contoh 1
• Mulai dengan data array yang belum terurut
Representasi array:
Bentuk pohon biner:
21 15 25 3 5 12 7 19 45 2 9
21
15 25
3 5 12 7
19 45 2 9