05 Bubble - Shell Sort
3 sks By. Sri Rezeki Candra Nursari
Materi Materi Pengantar Struktur Data Abstract Data Type (ADT) Rekursif : Fibonacci Sorting ( Selection, Insertion, Bubble, Shell , Merge, Quick) Struktur Data Linier (Linked List, Stack, Queu) Struktur Data Hirarki (Tree, Graph, Hash Tables)
Bubble/ Exchange Sort
M embandingkan elemen yang sekarang dengan elemen
yang berikut nya, jika elemen sekarang > elemen berikut nya, maka dit ukar. M et ode pengurut an gelembung (Bubble Sort ) , menginginkan larik t erurut menaik, maka elemen larik yang berharga paling kecil, dipindahkan ke ujung kiri larik melalui proses pert ukaran. Proses met ode inidilakukan sebanyak N-1 langkah(pass) dengan N adalah
ukuran larik. Pada akhir set iap langkah ke-I, larik L[1..N]
akan t erdiri at as dua bagian yait u bagian yang sudah t erurut , yait u L[1..I], dan bagian yang belum t erurut L[I+1..N]. Sedangkan langkah t erakhir, diperoleh larik(M etode Gelembung) Bubble Sort Algorit manya sebagai berikut :
1. i
2
2. Selama (i <= N-1) kerjakan baris 3 s.d. 7 3. j N
5. Jika (dat a[j-1] > dat a[j]) maka t ukar dat a[j-1] dengan dat a[j]
Bubble Sort - Ascending
23 17 1 4
10
5
7 j = 6
23
17
14
6
1
13
10
5
7 j = 5
1
14 6 1 3
6
13
10
5
7 j = 4
23 1 7
1
14
6
13
10
5
7
1
A: [ 23,17,14,6,13,10,1,5,7]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] Aw a l 2 3 1 7 1 4 6 1 3 1 01
17
5
7 i= 2
23
17
14
6
13
10
1
5
7 j = 9
23
14
23
6
13
10
1
5
7 j = 8
23
17
14
6 13 1 0
1
5
7 j = 7
17
Bubble Sort - Ascending
14
10
7 j = 6
1
23 17 1 4
5
6
13
10
7 j = 5
1 23 1 7
5
6
5
13
10
7 j = 4
1 2 3
5
17
14
6
13
10
7
13
A: [ 23,17,14,6,13,10,1,5,7, 12]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 31
14
23
17
14
6
13
10
5
7 j = 9
1
23
17
6 13 1 0
14
5
7 j = 8
1
23
17
14 6 1 3
5
10
7 j = 7
1
23
17
6
Bubble Sort - Ascending
14
10 j = 6
1
5 23 1 7
6
14
7
13
10 j = 5
1 5 2 3
6
17
7
7
13
10 j = 4
1
5
6
23
17
14
7
13
10
13
A: [ 23,17,14,6,13,10,1,5,7, 12]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 41
7
5
23
17
14
6 13 1 0
7 j = 9
1
5
23
17
14 6 1 3
10 j = 8
23 17 1 4
1
5
23
17
14
6
7
13
10 j = 7
1
5
6
Bubble Sort - Ascending
10
13 j = 7
1
5
6 23 1 7
7
14
13 j = 6
7
1
5 6 2 3
7
17
14
10
13
10
A: [ 23,17,14,6,13,10,1,5,7, 12]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 51
5
5
6
23
17
14 7 1 3 1 0
j = 9
1
6
6
23
17
14
7 1 0
13 j = 8
1
5
23 17 1 4
N/2 = 10/2 = 5 A’:[23,17,14,6,13] A”:[10,1,5,7,12] I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 6
23
6 7 2 3 1 0
17
14
13 j = 6
1
5
6 7 1 0
17
1
14
13 I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 7
1
5
6
7
10
5
13 j = 7
1
5
5
6
7
23
17 14 1 0 1 3
j = 9
1
6
14
7
23 17 1 4 1 0
13 j = 8
1
5
6
7 23 1 7 1 0
23 17 1 4 1 3
Bubble Sort - Ascending
A: [ 23,17,14,6,13,10,1,5,7, 12]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 81
5
6
7
10
13 23 1 7 1 4
j = 9
1
5
6
7
10 13 2 3 1 4
17 j = 8
Bubble Sort - Ascending
10 13 1 4 1 7
23
17
14
13
10
7
6
5
1
23 Ak h ir
A: [ 23,17,14,6,13,10,1,5,7, 12]
I t e r a si
D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a
D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] i= 96
5
1
j = 9
13 14 2 3 1 7
10
7
6
5
1
7
Shell Sort
- M et ode Shell sering disebut juga met ode pertambahan menurun.
- M et ode ini mengurut kan data dengan cara membandingkan suat u data dengan data lain yang memiliki jarak tertent u, kemudian dilakukan penukaran jika diperlukan.
Shell Sort
• Pada met ode ini pert ama-t ama adalah menent ukan jarak mula-mula
dari dat a yang akan dibandingkan, yait u N/ 2.- Set elah it u, dilakukan pengulangan dari 1 sampai dengan N/ 2.
- Pada masing-masing pengulangan dilakukan pembandingan ant ara dat a ke-j dengan dat a ke-(j+N/ 2).
Apabila dat a ke-j lebih besar dari dat a ke-(j+N/ 2) maka kedua dat a
t ersebut dit ukar.Pengulangan dari 1 sampai dengan N/ 2 ini dilakukan sampai semua
dat a ke-j selalu lebih kecil dari dat a ke-(j+N/ 2)
Shell Sort
- Pada proses berikut nya, digunakan jarak (N/ 2)/ 2 at au N/ 4
- Kemudian dilakukan pengulangan dari 1 s.d. (N-N/ 4) at au 3N/ 4
- Pada masing-masing pengulangan dilakukan pembandingan ant ara dat a ke-j dengan dat a ke-(j+N/ 4)
- Apabila diperlukan, kedua dat a t ersebut dit ukar
• Pengulangan dari 1 s.d. 3N/ 4 ini dilakukan sampai semua dat a ke-j <
dari pada dat a ke-(j+N/ 4)
- Pada proses berikut nya, digunakan jarak (N/ 4)/ 2 at au N/ 8
- Demikian set erusnya sampai jarak yang digunakan adalah 1
Shell Sort
(M etode pengurutan penambahan menurun)
Algorit manya sebagai berikut : 1. i
2
2. Selama (i > 1) kerjakan baris 3 s.d. 10 3. i i/ 2
4. Selesai false
5. Kerjakan baris 5 s.d. 9 sampai (Selesai=t rue)
6. Selesai t rue
7. j
1
8. Selama (j <= N – i) kerjakan baris 9 dan 10
Shell Sort - Ascending
23
23
17
1
5
7
j = 4
13
10
1
6
17
13 10 1 4
14
5
7
j = 5
13
10
1 5 2 3
17
14
6
7
6
A: [ 23,17,14,6,13,10,1,5,7]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] Aw a l 2 3 1 7 1 4 6 1 3 1 01
j = 1 2 3
5
7 j r k = 4
23
17
14
6
13
10
1
5
7
17
7
14 6 1 3
10
1
5
7
j = 2
13 1 7
14
6 23 1 0
1
5
j = 3
Shell Sort - Ascending
5
14
6
23
j = 5
1
5
7 10 1 3 17 1 4
6
23
j = 6
1
7
1
10 13 1 7
14
6
23
j = 7
1
5
7
10
13 6 1 4 17 2 3
N/2 = 10/2 = 5 A’:[23,17,14,6,13] A”:[10,1,5,7,12]
5 7 1 0 13 1 7
A: [ 23,17,14,6,13,10,1,5,7]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] j r k = 2 1 3 1 01
13
5 7 1 7 1 4 6 2 3 j = 1 1 3
10
1
5
7
17
14
6
23
j = 2
1 1 0
5
23
7
17
14
6
23
j = 3
1 5 1 3
10
7
17
14
6
j = 4
Shell Sort - Ascending
23
5 7 1 0
13
6
14
17
23
j = 5
1
5
7 6 1 3 10 1 4
17
j = 6
j = 4
1
5
7
6 13 1 0 14 1 7
23
j = 7
1
5
7
6
13 10 1 4 17 2 3
N/2 = 10/2 = 5 A’:[23,17,14,6,13] A”:[10,1,5,7,12]
1
A: [ 23,17,14,6,13,10,1,5,7]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] j r k = 21
5
5 7 1 0 1 3 6 1 4 1 7 2 3 j = 1
1
5
7
10
13
6
14
17
23
j = 2
1
7 1 0
17
13
6
14
17
23
j = 3
1
5
7
10 1 3
6
14
23
Shell Sort - Ascending
23
5
6
7 1 3
10
14
17
23
j = 5
1
5
6 7 1 3 1 0
14
17
j = 6
j = 4
1
5
6
7 10 1 3 1 4
17
23
j = 7
1
5
6
7
10 13 1 4 1 7
23
1
A: [ 23,17,14,6,13,10,1,5,7]
I t e r a si D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a D a t a [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] j r k = 11
5
5
7 6 1 3 1 0 1 4 1 7 2 3 j = 1
1
5
7
6
13
10
14
17
23
j = 2
1
7
17
6
13
10
14
17
23
j = 3
1
5
7
6
13
10
14
23