You are on page 1of 22

Mata Kuliah Desain Algoritma 2

Shell Sort

Joko Iskandar, M.Kom.


Capaian Pembelajaran
 Mahasiswa mampu memahami
Sorting pada Java
 Mahasiswa mampu membedakan
macam-macam Sorting pada Java
 Mahasiswa mampu
mengimplementasikan Sorting
pada Java
Pengantar Sorting
Pengertian

Proses menyusun elemen-elemen dengan tata urut Misalnya mengurutkan data


tertentu dan proses tersebut terimplementasi mahasiswa, data pengguna,
dalam bermacam aplikasi pembeli, nasabah dan lain lain

Sorting yang kita terapkan menggunakan tipe data


array agar pemahaman serta pengimplementasiannya
lebih mudah

Data Acak : 22 10 15 3 8 2
Terurut Ascending : 2 3 8 10 15 22
Terurut Descending : 22 15 10 8 3 2
3
Macam-macam Sorting
 Buble Sort
 Selection Sort
 Insertion Sort
 Shell Sort
 Merge Sort
 Quick Sort

4
SHELL SORT
 Metode ini disebut juga dengan metode
pertambahan menurun (diminishing
increment).

 Metode ini dikembangkan oleh Donald L.


Shell pada tahun 1959, sehingga sering
disebut dengan Metode Shell Sort.

 Metode ini mengurutkan data dengan cara


membandingkan suatu data dengan data lain
yang memiliki jarak tertentu, kemudian
dilakukan penukaran bila diperlukan

5
Konsep Algoritma Shell Sort
 Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan,
yaitu N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data
pertama lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar.
Kemudian data kedua 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).
 Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama
dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari
data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua
dibandingkan 94 dengan jarak yang sama yaitu N / 4. Demikian seterusnya sampai
seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke-(j + N /
4).
 Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8. Demikian seterusnya
sampai jarak yang digunakan adalah 1

6
Algoritma metode Shell dapat dituliskan sebagai berikut :

7
Ilustrasi Proses Algoritma
Mari kita perhatikan contoh berikut untuk
memiliki gagasan tentang cara kerja Shell sort.
Untuk contoh dan kemudahan pemahaman,
misal mengambil interval 4. Buat daftar sub-
virtual dari semua nilai yang berada pada
interval 4 posisi. Di sini nilai-nilai ini adalah
{35, 14}, {33, 19}, {42, 27} dan {10, 44}

Bagaimana selanjutnya? 8
Disisni kita membandingkan nilai dalam setiap sub-daftar dan menukarkannya (jika
perlu) dalam larik aslinya. Setelah langkah ini, array baru akan terlihat seperti ini

9
Kemudian, kita mengambil interval 2 dan celah ini menghasilkan dua sub-
daftar - {14, 27, 35, 42}, {19, 10, 33, 44}

10
Kita membandingkan dan menukar nilai, jika diperlukan, dalam larik asli. Setelah langkah
ini, array akan terlihat seperti ini:

11
Akhirnya, kita mengurutkan sisa array
menggunakan interval nilai 1. Shell sort
menggunakan semacam penyisipan untuk
mengurutkan array.
Berikut adalah penggambaran langkah demi
langkah :

12
Perhatikan contoh penyelesaian menggunakan tabel:

Proses pengurutan pada tabel 1 dapat dijelaskan sebagai berikut:


 Pada saat Jarak = 5, j diulang dari 0 sampai dengan 4. Pada pengulangan
pertama, Data[0] dibandingkan dengan Data[5]. Karena 1223 maka Data[1] ditukar
dengan Data[6]. Demikian seterusnya sampai j=4.
 Pada saat Jarak = 5/2 = 2, j diulang dari 0 sampai dengan 7. Pada pengulangan
pertama, Data[0] dibandingkan dengan Data[2]. Karena 12>9 maka Data[0]
ditukar dengan Data[2]. Kemudian Data[1] dibandingkan dengan Data[3] juga
terjadi penukaran karena 23>11. Demikian seterusnya sampai j=7. Perhatikan
untuk Jarak = 2 proses pengulangan harus dilakukan lagi karena ternyata Data[0]
> Data[2]. Proses pengulangan ini berhenti bila Sudah=true.
 Demikian seterusnya sampai Jarak=1.

13
Proses Pengurutan dengan Metode Shell

14
Kelebihan dan Kekurangan
Kelebihan Shell sort :

1. Algoritma ini sangat rapat dan mudah untuk diimplementasikan.


2. Operasi pertukarannya hanya dilakukan sekali saja.
3. Waktu pengurutan dapat lebih ditekan.
4. Mudah menggabungkannya kembali.
5. Kompleksitas selection sort relatif lebih kecil.

Kekurangan Shell Sort :

1. Membutuhkan method tambahan.


2. Sulit untuk membagi masalah.

15
Implementasi dalam Java
Latihan 39 : Shell sort secara ascending dengan data int

16
Output:

17
Latihan 40 : Shell sort secara descending dengan data int

18
Output:

19
Kompleksitas Shell Sort

 Algoritma shell sort adalah algoritma dengan kompleksitas algoritma O(n2 ) dan yang paling
efisien dibandingkan algoritma – algoritma yang lain dengan kompleksitas algoritma yang
sama.
 Algoritma shell sort lima kali lebih cepat dibandingkan algoritma pengurutan bubble sort dan
dua kali lebih cepat dibandingkan algoritma pengurutan dengan insertion sort.
 Algoritma shell sort juga merupakan algoritma yang paling kompleks dan sulit dipahami.

20
TUGAS INDIVIDU

Kerjakanlah pengurutan dengan Shell Sort seprti


pada latihan 39 dan 40 untuk Array berikut ini:

5,7,9,1,8,12,3,4,6

Bagaimana hasilnya?

21
Thanks!

22

You might also like