Anda di halaman 1dari 13

Advanced Sorting Algorithm

Merge Sort, Quick Sort


Merge Sort
• Merupakan algoritma divide-and-conquer (membagi dan
menyelesaikan)
• Membagi array menjadi dua bagian sampai subarray hanya berisi satu
elemen
• Mengabungkan solusi sub-problem :
• Membandingkan elemen pertama subarray
• Memindahkan elemen terkecil dan meletakkannya ke array hasil
• Lanjutkan Proses sampai semua elemen berada pada array hasil
MergeSort
• Metode pengurutan merge sort adalah metode pengurutan lanjut, sama
dengan metode Quick Sort. Metode ini juga menggunakan konsep
devide and conquer yang membagi data S dalam dua kelompok yaitu S1
dan S2. Proses pembagian data dilakukan secara rekursif sampai data
tidak dapat dibagi lagi atau dengan kata lain data dalam sub bagian
menjadi tunggal.
• Setelah data tidak dapat dibagi lagi, proses penggabungan (merging)
dilakukan antara sub-sub bagian dengan memperhatikan urutan data
yang diinginkan (ascending/kecil ke besar atau descending/besar ke
kecil). Proses penggabungan ini dilakukan sampai semua data tergabung
dan terurut sesuai urutan yang diiginkan.
Algoritma Merge Sort
Algoritma mergesort(S,C)
Input: n elemen dari data S dan comparator C
Output: data S terurut berdasarkan C
if S.size()>1
(S1,S2) ← partisi(S,n/2)
mergesort(S1,C)
mergesort(S2,C)
S ← merge(S1,S2)
Ide Quick Sort

Tentukan “pivot”. Bagi Data menjadi 2 Bagian yaitu Data kurang dari dan Data
lebih besar dari pivot. Urutkan tiap bagian tersebut secara rekursif.
Quick Sort
• Algoritma divide-and-conquer (membagi dan menyelesaikan)
• array A[left..right] dipartisi menjadi dua subarray yang tidak empty Subarray
diurutkan secara rekursif dengan memanggil quicksort
Pseudocode Quick Sort
Quicksort(Arr,left,right)
{
if (left < right)
{
Quicksort(Arr, left, j);
Quicksort(Arr, i, right);
}
}
Pivot
if(pivot<right)
right--
else
swap

if(pivot>left)
left++
else
swap
Partisi
• Jelas, semua kegiatan penting berada pada fungsi partition()
• Menyusun kembali subarray
• Hasil akhir :
• Dua subarray
• Semua elemen pada subarray pertama < semua nilai pada subarray kedua
• Mengembalikan indeks pivot yang membagi subarray
Quick Sort
• This sorting algorihtm uses the idea of divide and conquer.
• It finds the element callde pivot which divides the array into two
halves in such a way that elements in the left half are smaller than
pivot and elements in the right half are greater than pivot
Quick Sort
• We follow three steps recursively :
• Find pivot that divides the array into two halves
• Quick sort the left half
• Quick sort the right half

Anda mungkin juga menyukai