Kom/STMIK
Bumigora/2016 3/5/2018
Outline
• Beberapa algoritma untuk melakukan sorting:
– Bubble sort
– Selection sort
– Insertion sort
– Shell sort
– Merge sort
– Quick sort
• Untuk masing-masing algoritma:
– Ide dasar
– Contoh eksekusi
– Algoritma
– Analisa running time/kompleksitas
3/5/2018 M. Yunus, M.Kom/STMIK
Bumigora/2016
Sort
• Sorting = pengurutan
• Sorted = terurut menurut kaidah/aturan tertentu
• Data pada umumnya disajikan dalam bentuk sorted.
• Contoh:
– Nama di buku telpon
– Kata-kata dalam kamus
– File-file di dalam sebuah directory
– Indeks sebuah buku
– Data mutasi rekening tabungan
– CD di toko musik
• Bayangkan jika data di atas tidak terurut!
40
2 40
2 40
1 1 43
3 43
3 65
0 65
-1
0 58
65
-1 65
58
3 42
65
3 65
42
4 65
4
2 2 1 40 3 43 0 -1 58 3 42 4 65
3 1 2 3 40 0 -1 43 3 42 4 58 65
4 1 2 3 0 -1 40 3 42 4 43 58 65
6 1 0 -1 2 3 3 4 40 42 43 58 65
7 0 -1 1 2 3 3 4 40 42 43 58 65
8 -1 0 1 2 3 3 4 40 42 43 58 65
40 2 1 43 3 4 0 -1 58 3 42 65
40 2 1 43 3 4 0 -1 42 3 58 65
40 2 1 3 3 4 0 -1 42 43 58 65
-1 2 1 3 3 4 0 40 42 43 58 65
-1 2 1 3 3 0 4 40 42 43 58 65
-1 2 1 0 3 3 4 40 42 43 58 65
-1 0 1 2 3 3 4 40 42 43 58 65
-1 0 1 2 3 3 4 40 42 43 58 65
-1 0 1 2 3 3 4 40 42 43 58 65
-1 0 1 2 3 3 4 40 42 43 58 65
int T = a[min];
a[min] = a[i];
a[i] = T;
Pindahkan ke akhir
}
sorted list.
}
40 2 1 43 3 65 0 -1 58 3 42 4
2 40 1 43 3 65 0 -1 58 3 42 4
1 2 40 43 3 65 0 -1 58 3 42 4
1 2 40 43 3 65 0 -1 58 3 42 4
1 2 3 40 43 65 0 -1 58 3 42 4
1 2 3 40 43 65 0 -1 58 3 42 4
1 2 3 40 43 65 0 -1 58 3 42 4
0 1 2 3 40 43 65 -1 58 3 42 4
-1
0 1
0 2
1 3
2 40
3 40
43 43
65 65 58 3 42 4
-1
0 1
0 2
1 3
2 40
3 43
3 40
65 43
43 58 58
65 65 42 4
-1
0 1
0 2
1 3
2 40
3 43
3 40
65 42 43
43 65 58 65 4
-1
0 1
0 2
1 3
2 40
3 43
3 43
65
4 40
42 42
65 43
43 58 58
65 65
Original:
40 2 1 43 3 65 0 -1 58 3 42 4
40 2 1 43 3 65 0 -1 58 3 42 4
After 5-sort:
40 0 -1 43 3 42 2 1 58 3 65 4
After 3-sort:
2 0 -1 3 1 4 40 3 42 43 65 58
After 1-sort:
-1
0 1
0 2
1 3
2 40
3 43
3 43
65
4 40
42 42
65 43
43 58 58
65 65
1 2 3 40 43 65 -1 0 3 4 42 58
CounterA CounterB
-1 1 0 2 3 3 4 40 42 43 58 65
Counterc
40 2 1 43 3 65 0 -1 58 3 42 4
split
40 2 1 43 3 65 0 -1 58 3 42 4
40 2 1 43 3 65 0 -1 58 3 42 4
40 2 1 43 3 65 0 -1 58 3 42 4 split
2 1 3 65 -1 58 42 4
40 1 2 43 3 65 0 -1 58 3 4 42
merge
1 2 40 3 43 65 -1 0 58 3 4 42
1 2 40 3 43 65 -1 0 58 3 4 42
1 2 3 40 43 65 -1 0 3 4 42 58 merge
-1 0 1 2 3 3 4 40 42 43 58 62
58 -1
4
2 42
3
43
0 40
1
3
65
65
2
0 42
3 40
4 43
-1 3 58
1
-1 0 1 2 3 3 4 40 42 43 58 65
-1 0 1 2 3 3 4 40 42 43 58 65
40 2 1 43 3 65 0 -1 58 3 42 4
left right
4 2 1 43 3 65 0 -1 58 3 42 40
4 2 1 40 3 65 0 -1 58 3 42 43
4 2 1 3 3 65 0 -1 58 40 42 43
4 2 1 3 3 40 0 -1 58 65 42 43
4 2 1 3 3 -1 0 40 58 65 42 43
4 2 1 3 3 -1 0 40 58 65 42 43
left right
3/5/2018 M. Yunus, M.Kom/STMIK
Bumigora/2016
Quick sort: Partition algorithm
40 2 1 43 3 65 0 -1 58 3 42 4
1
4 2 1 3 3 -1 0 40 58 65 42 43
0 2 1 3 3 -1 4 43 42 58 65
-1 0 1 3 3 2 42 43 65
-1 1 3 3 2 42
2 3 3
2 3
-1 0 1 2 3 3 4 40 42 43 58 65
3/5/2018 M. Yunus, M.Kom/STMIK
Bumigora/2016
Quick sort: Partition algorithm 2
Original: 40 2 1 43 3 65 0 -1 58 3 42 4
pivot =
“buang” pivot sementara
40
4 2 1 43 3 65 0 -1 58 3 42 40
4 2 1 43 3 65 0 -1 58 3 42 40
left right
4 2 1 3 3 65 0 -1 58 43 42 40
left
M. Yunus, M.Kom/STMIK
right
3/5/2018 Bumigora/2016
Quick sort: Partition algorithm 2
4 2 1 3 3 65 0 -1 58 43 42 40
left right
4 2 1 3 3 -1 0 65 58 43 42 40
left right
4 2 1 3 3 -1 0 65 58 43 42 40
right left
sort (rekursif) sort (rekursif)
CROSSING!