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 ini

dilakukan 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 0

  1

  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= 3

  1

  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= 4

  1

  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= 5

  1

  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= 8

  1

  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= 9

  6

  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 0

  1

  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 0

  1

  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 = 2

  1

  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 = 1

  1

  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