You are on page 1of 19

KONSEP DAN PRAKTIK

SHELL SORT
(1908-SD-S05-04)
TUJUAN PEMBELA JARAN
Setelah mempelajari bagian ini,
Anda diharapkan telah mampu:

Menjelaskan logika shell sort dan


mempraktikkan dengan contoh kasus.

1908SD05
PENGANTAR
3

• Metode shell sort disebut juga dengan metode pertambahan


menurun (diminishing increment sort).
• Metode ini dikembangkan oleh Donald L. Shell pada tahun
1959, sehingga sering disebut dengan Metode Shell Sort.
• Metode shell sort mengurutkan data dengan cara
membandingkan suatu data dengan data lain yang
memiliki jarak tertentu sehingga membentuk sebuah
sublist, kemudian dilakukan penukaran bila diperlukan.

1908SD05
PRINSIP KERJA SHELL SORT
4

• Jarak yang dipakai didasarkan pada increment value atau


sequence number k.
• Misalnya sequence number yang dipakai adalah 5, 3, 1. Tidak
ada pembuktian di sini bahwa bilangan-bilangan tersebut
adalah sequence number terbaik.
• Setiap sublist berisi elemen ke-k dari kumpulan elemen
yang asli.

1908SD05
CONTOH SHELL SORT
5

Contoh:

Jika k = 5, maka sublist-nya Begitu juga jika k = 3,


adalah sebagai berikut: maka sublist-nya adalah:
- s[0] s[5] s[10] ... - s[0] s[3] s[6] ...
- s[1] s[6] s[11] … - s[1] s[4] s[7] …
- s[2] s[7] s[12] … - dan seterusnya.
- dan seterusnya.

1908SD05
PROSES SHELL SORT
6

Proses pengurutan dalam shell sort adalah sebagai berikut:


1. Buatlah sublist yang didasarkan
pada jarak (sequence number) yang
dipilih.

2. Urutkan masing-masing sublist


tersebut.

3. Gabungkan seluruh sublist.

1908SD05
ILUSTRASI PROSES SHELL SORT
7

Urutkan sekumpulan elemen di bawah ini, misalnya


diberikan sequence number: 5, 3, 1.

30 62 53 42 17 97 91 38
[0] [1] [2] [3] [4] [5] [6] [7]

1908SD05
PROSES SHELL SORT k = 5
8

30 62 53 42 17 97 91 38
Step 1: Buat sublist k = 5
30 62 53 42 17 97 91 38
S[0] S[5]
S[1] S[6] [0] [1] [2] [3] [4] [5] [6] [7]
S[2] S[7]
S[3]
Step 2 s.d. 3: Urutkan sublist dan gabungkan
S[0] < S[5] OK
30 62 38 42 17 97 91 53
S[1] < S[6] OK
[0] [1] [2] [3] [4] [5] [6] [7]
S[2] > S[7] not OK
Tukar
1908SD05
PROSES SHELL SORT k = 3
9

30 62 53 42 17 97 91 38
Step 1: Buat sublist k = 3
30 62 38 42 17 97 91 53
S[0] S[3] S[6]
S[1] S[4] S[7] [0] [1] [2] [3] [4] [5] [6] [7]
S[2] S[5]

Step 2 s.d. 3: Urutkan sublist dan gabungkan


S[0] S[3] S[6] 30, 42, 91 OK
S[1] S[4] S[7] 62, 17, 53 not OK 30 17 38 42 53 97 91 62
SORT them 17, 53, 62
[0] [1] [2] [3] [4] [5] [6] [7]
S[2] S[5] 38, 97 OK
1908SD05
PROSES SHELL SORT k = 1
10

30 62 53 42 17 97 91 38
S[0] S[1] S[2] S[3] S[4] S[5] S[6] S[7]
Step 1: Buat sublist k =1
30 17 38 42 53 97 91 62
[0] [1] [2] [3] [4] [5] [6] [7]

Step 2 s.d. 3: Urutkan sublist dan 17 30 38 42 53 62 91 97


gabungkan
[0] [1] [2] [3] [4] [5] [6] [7]
Sorting akan seperti insertion sort.

1908SD05
PEMILIHAN SEQUENCE NUMBER
11

• Disarankan jarak mula-mula dari data yang


akan dibandingkan adalah: n/2.

• Pada proses berikutnya, digunakan jarak (n/2)


dibagi 2 atau n/4.

• Pada proses berikutnya, digunakan jarak (n/4)


dibagi 2 atau n/8.

• Demikian seterusnya sampai jarak yang


digunakan adalah 1.
1908SD05
PROSES SEQUENCE NUMBER (1)
12

Untuk jarak n/2:


• Data pertama (j=0) dibandingkan data dengan jarak n/2.
Apabila data pertama lebih besar dari data ke n/2
tersebut, maka kedua data tersebut ditukar.
• Kemudian data kedua (j=1) dibandingkan dengan jarak
yang sama yaitu n/2.
• Demikian seterusnya sampai seluruh data
dibandingkan sehingga semua data ke-j selalu lebih
kecil daripada data ke-(j + n/2).

1908SD05
PROSES SEQUENCE NUMBER (2)
13

• Ulangi langkah-langkah sebelumnya untuk jarak = n/4 →


lakukan pembandingan dan pengurutan sehingga
semua data ke-j lebih kecil daripada data ke-(j + n/4).
• Ulangi langkah-langkah sebelumnya untuk jarak = n/8 →
lakukan pembandingan dan pengurutan sehingga
semua data ke-j lebih kecil daripada data ke-(j + n/8).
• Demikian seterusnya sampai jarak yang digunakan
adalah 1.

1908SD05
ALGORITME SHELL SORT (1)
14

01 jarak <- N
02 selama (jarak>1) kerjakan 3-12
03 jarak <- jarak / 2
04 Sudah <- 1
05 selama Sudah = 1 kerjakan 6-12
06 Sudah <- 0
07 j <- 0
08 selama (j<N-jarak) kerjakan 9-12
09 i <- j + jarak
10 if (Data[j] > Data[i])
11 Tukar(&Data[j],&Data[i])
12 Sudah=1

1908SD05
ALGORITME SHELL SORT (2)
15

13 ShellSort(L,N)
14 //Tentukan H sebagai gap
15 H ←1
16 WHILE H < N/3
17 H ←3*H+1
18 END-WHILE
19
20 //Proses sampai H=1
21 WHILE H > 0
22 FOR Luar = H TO N-1
23 Temp←L[Luar]
24 WHILE Dalam > H-1 AND L[Dalam-H]≥Temp
25 L[Dalam] ← L[Dalam-H]
26 Dalam ← Dalam-H;
27 END-WHILE//Dalam
28 L[Dalam ←Temp;
29 END-FOR//Luar
30 END-WHILE
1908SD05
ANALISIS METODE SHELL SORT
16

• Running time dari metode shell sort bergantung


pada beratnya pemilihan sequence number.
• Disarankan untuk memilih sequence number
dimulai dari n/2, kemudian membaginya lagi
dengan 2, seterusnya hingga mencapai 1.
• Shell sort menggunakan 3 nested loop untuk
merepresentasikan sebuah pengembangan yang
substansial terhadap metode insertion sort.

1908SD05
🔑 DAFTAR PUSTAKA
GeeksforGeeks. Retrieved June 26, 2019 from
https://www.geeksforgeeks.org/
Kadir, A. (2015). Teori dan aplikasi struktur data menggunakan Java.
Yogyakarta: Andi.

1908SD05
© KREDIT
Lecturer
Harfebi Fryonanda, M.Kom.

Subject Matter Expert


Arfika Nurhudatiana, Ph.D.

Instructional Design Reviewer


Renata Marelene, S.Kom., M.M.

Instructional Designer
Puspa Tanjung Sari, S.Kom.
1908SD05

You might also like