Sorting Shell sort, Merge sort, Quick sort Rahmady Liyantanto liyantanto@gmail.com liyantanto.wordpress.com Sorting Shell sort, Merge sort, Quick sort Struktur Data S1 Teknik Informatika Universitas Trunojoyo
Shell Sort(1) Metoda pertambahan menurun (diminishing increment). Metoda dikembangkan oleh Donald L. Shell tahun 1959. Metoda ini memanfaatkan penukaran sepasang elemen untuk mencapai keadaan urut. Dalam hal ini jarak dua elemen yang dibandingkan dan ditukarkan tertentu.
Shell Sort(2) Algoritma ini bisa dipandang sebagai modifikasi dari algoritma Insertion Sort, lebih tepatnya memanfaatkan kondisi-kondisi positif dari Insertion Sort. Keuntungan: Insertion Sort bisa sangat efisien untuk data dalam kondisi hampir terurut. Karena Insertion Sort sangat sederhana, maka overhead cost untuk proses-proses tambahannya pun amat kecil sehingga untuk jumlah data n yang kecil masih bisa lebih cepat dari algoritma O(n log n).
Algoritma Shell Sort Langkah pertama, ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudian elemen kedua dibandingkan dengan elemen lain dengan jarak yang sama. Demikian seterusnya sampai seluruh elemen dibandingkan.
Shell sort Original: 40 2 1 43 3 65 -1 58 42 4 5-sort: Sort setiap item yang berjarak 5: 40 2 1 43 3 65 -1 58 42 4
Shell sort Original: 40 2 1 43 3 65 -1 58 3 42 4 After 5-sort: 40 -1 -1 58 3 42 4 After 5-sort: 40 -1 43 3 42 2 1 58 3 65 4 After 3-sort: 2 -1 3 1 4 40 3 42 43 65 58 After 1-sort: -1 1 1 2 2 3 3 40 43 3 65 43 4 42 40 42 43 65 43 58 58 65 65
Shell sort: Gap values Gap: jarak antara elemen yang di-sort. Seiring berjalannya waktu, gap diperkecil. Shell sort juga dikenal sebagai Diminishing Gap Sort. Shell mengusulkan mulai dengan ukuran awal gap = N/2, dan dibagi 2 setiap langkah. Ada banyak variasi pemilihan gap.
Kinerja Shell sort O(N3/2) O(N5/4) O(N7/6) Ada 3 “nested loop”, tetapi Shell sort masih lebih baik dari Insertion sort. Mengapa?
Quick Sort Membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen- elemen lain yang lebih kecil daripada pivot tersebut terletak di sebelah kirinya dan elemen-elemen lain yang lebih besar daripada pivot tersebut terletak di sebelah kanannya. Sehingga dengan demikian telah terbentuk dua sublist, yang terletak di sebelah kiri dan kanan dari pivot. Lalu pada sublist kiri dan sublist kanan kita anggap sebuah list baru dan kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi. Sehingga didalamnya telah terjadi proses Rekursif.
Proses Quick Sort Proses 1 Proses 2
Procedure quick sort
Merge Sort Algoritma ini hampir mirip dengan QuickSort (Partisi) Kecuali bahwa algoritma ini melakukan partisi tanpa kriteria. Jadi, data set (X[l] ... X[r]) di partisi langsung ke du sub data set dengan jumlah data yang sama (X[l] ... X[(l+r)/2], dan X[(l+r)/2+1] ... X[r]). Lalu secara rekursif melakukan Merge Sort untuk masing-masing data set. Karena kedua data set itu bisa overlapping (tidak seperti pada Quick Sort) maka setelah kedua sub data set terurut masih memerlukan proses penggabungan (Merging). Merging ini memerlukan ruang tambahan yaitu suatu array yang sama panjangnya dengan panjang kedua subset untuk menyimpan hasilnya.
Merge sort: Contoh split 40 2 1 43 3 65 -1 58 42 4 40 2 1 43 3 65 -1 -1 58 42 4 40 2 1 43 3 65 -1 58 3 42 4 40 2 1 43 3 65 -1 58 3 42 4 40 2 1 43 3 65 -1 58 3 42 4