Disusun Oleh:
Muhammad Kamal Azmi (3125141769)
2016
Daftar Isi
Daftar Isi i
1 PENDAHULUAN 1
1.1 Latar Belakang . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Pembatasan Masalah . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Rumusan Masalah . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 Manfaat Penulisan . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.5 Sistematika Penulisan . . . . . . . . . . . . . . . . . . . . . . . . 2
2 PEMBAHASAN 3
2.1 Sejarah Shell Sort . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Proses Pengurutan Shell Sort . . . . . . . . . . . . . . . . . . . 3
3 KESIMPULAN 6
i
Abstrak
Shell Sort merupakan proses sorting yang bertujuan untuk menyusun datum-
datum pada suatu data hingga terurut. Shell sort menggunakan jarak-jarak
antardatum tertentu pada setiap proses perbandingannya. Semakin kecil jarak
pada suatu proses Shell Sort, maka proses sorting akan semakin mendekati
hasil akhir.
Bab 1
PENDAHULUAN
1
(a) Menyelesaikan tugas mata kuliah Perancangan dan Analisis Algo-
ritma
(b) Mengetahui cara kerja Shell Sort
1. Bagi Pembaca
Memperkaya pengetahuan tentang jenis-jenis sorting
2
Bab 2
PEMBAHASAN
3
j(k1)
jk = (2.1)
2
yang merupakan bentuk umum jarak pada proses ke-k. Dapat disimpulkan
bahwa apabila suatu jarak jk = 1, maka kita telah memasuki proses terakhir.
Penting untuk diketahui bahwa apabila nilai dari suatu jarak jk bukan me-
rupakan bilangan bulat, maka akan dilakukan pembulatan kebawah. Sehingga,
j(k1)
jk = b c. (2.2)
2
Contoh 1.
Diberikan data: 14, 18, 19, 37, 23, 40, 29, 30, 11. Maka banyaknya data
adalah N = 9
Sehingga j1 = b 29 c = b4, 5c = 4. Artinya, jika kita berada pada indeks ke-
1, maka elemen selanjutnya adalah pada indeks ke-5, dan elemen selanjutnya
ada pada elemen ke-9. Begitu juga apabila kita berada pada indeks ke-2, maka
elemen selanjutnya adalah pada indeks ke-6.
Kita mulai proses pertama dari indeks ke-1, di mana elemen-elemennya
adalah 14, 23, dan 11. Apakah 14 > 23? Tidak. Sehingga tidak dilakukan
penukaran. Karena tidak dilakukan penukaran, kita berjalan ke indeks ke-2.
Pada indeks ke-2, elemen-elemennya adalah 18 dan 40. Apakah 18 > 40?
Tidak. Lalu kita kembali berjalan ke indeks-indeks selanjutnya.
Pada indeks ke-4, yaitu 37, memuat elemen 37 dan 30. Dapat dilihat
bahwa 37 > 30, maka dilakukan penukaran. Setelah itu kita kembali berjalan
ke indeks selanjutnya, yaitu indeks ke-5.
Indeks ke-5 adalah 23, maka elemen yang terkait adalah indeks ke-9 yaitu
11. Perlu diketahui, indeks ke-1 juga elemen yang akan diperhitungkan pada
proses ini karena antarkedua indeks berjarak j1 = 4. Kita bandingkan 23 dan
11. Karena 23 > 11, maka kita lakukan penukaran. Setelah penukaran ter-
sebut, kita bandingkan lagi 11 dengan 14. Dan dilakukan kembali penukaran
karena 14 > 11. Perlu diketahui bahwa apabila pada perbandingan pertama ti-
dak dilakukan penukaran, maka kita tidak akan membandingkan indeks-indeks
sebelumnya. Setelah itu kita berjalan ke indeks selanjutnya.
Maka data sementara hasil dari proses pertama adalah: 11, 18, 19, 30, 16,
40, 29, 37, 23.
Karena seluruh indeks sudah dilewati pada proses pertama, maka kita akan
memasuki proses kedua dengan jarak j2 = j21 = 42 = 2. Lalu kita memulai dari
4
indeks pertama pada proses kedua, dengan elemen-elemennya adalah 11, 19,
14, 29, 23. Dengan proses yang sama, kita bandingkan indeks ke-1 dan ke-3,
di mana tidak dilakukan penukaran karena 11 19.
Lalu kita berjalan ke indeks ke-2, dengan elemen-elemen 18, 30, 40, dan 37.
Kita kembali berjalan ke indeks selanjutnya karena tidak dilakukan penukaran
antara 18 dan 30.
Pada indeks ke-3 yaitu 19, yang kita bandingkan dengan indeks ke-5 yaitu
14, dilakukan penukaran. Karena itu, kita akan membandingkan indeks ke-3
dengan indeks ke-1.
Pada akhir dari proses kedua, data sementara yang didapat adalah: 11, 18,
14, 30, 19, 37, 23, 40, 29. Dan pada proses ketiga, dengan jarak j3 = j22 = 22
menghasilkan array yang sudah tersusun dengan urutan data: 11, 14, 18, 19,
23, 29, 30, 27, 40.
5
Bab 3
KESIMPULAN