Quick sort merupakan divide and conquer algorithm. Algoritma ini mengambil salah satu elemen secara acak (biasanya dari tengah) lalu menyimpan semua elemen yang lebih kecil di sebelah kirinya dan semua elemen yang lebih besar di sebelah kanannya. Hal ini dilakukan secara rekursif terhadap elemen di sebelah kiri dan kanannya sampai semua elemen sudah terurut. Algoritma ini termasuk algoritma yang cukup baik dan cepat. Hal penting dalam algoritma ini adalah pemilihan nilai tengah yang baik sehingga tidak memperlambat proses sorting secara keseluruhan.
Ide dari algoritma ini adalah sebagai berikut:- Pilih satu elemen secara acak.
- Pindahka semua elemen yang lebih kecil ke sebelah elemen tersebut dan semua elemen yang lebih besar ke sebelah kanannya. Elemen yang nilainya sama bisa disimpan di salah satunya. Ini disebut operasi partisi.
- Lakukan sort secara rekursif terhadap sublist sebelah kiri dan kanannya.
Kompleksitas algoritma Quick Sort adalah bergantung pada hasil partisi tersebut. Kondisi best case adalah jika dalam setiap partisi tidak dilakukan operasi pertukaran tempat dan pivot tepat berada di tengah subset (O(n)). Kondisi average case adalah jika partisi menghasilkan sub data set yang balance (O(n log n)). Kondisi worse case adalah jika partisi menghasilkan sub data set kosong dan yang lain besar (o(n2)). Walaupun demikian, algoritma ini cenderung untuk average case.
Pseudocode quick sort:
Procedure Quick (int data[ ], int awal, int akhir)
kiri = awal
kanan = akhir
While (kiri < pivot =" kiri" kanan =" kanan"> data[ kanan ] then
tukar (data[ pivot ], data[ kanan ])
Endif
pivot = kanan
While (data[ kiri ] <= data[ pivot ]) dan (kiri < kiri =" kiri"> data[ pivot ])
tukar (data[ kiri ], data[ pivot ])
Endif
Endwhile
If (kanan>awal) Quick(data,awal,(pivot-1))
If (kiri




Masih 0 komentar :
Posting Komentar
Silahkan berikan komentar, saran, atau kritik anda... ^_^