Selasa, 30 Juni 2009

Quick Sort

<5.quick>

Quick sort adalah program sorting data tercepat dari program sorting data yang lain.. ( katanya dosen algoritma aku sie gitu.. hehee )
Itu karena namanya.. Quick Sort.. Yea, pantes'an cepet.. Hee, Q'dink..
Bukan cuma karena namanya aj, kq.. Tapi terlebih dari cara kerja program ini, yang memang sangat cepat dalam mengurutkan data.. Liat aja, sintax'nya.. Wuih rumit banget.. Q aj, sampe' mual2 liat sintax'nya.. Hehee..
Tapi dibalik kerumitan itu.. Q coba bahas deh.. Yang penting nilai tugas Prak. Algoritma, Q ini GEDE ! (Ngarep) Hehee..
Cara kerja Quick SOrt nie adalah membandingkan suatu elemen (disebut pivot) dengan elemen lain dan menyusun sedemikian rupa sehingga elemen lain yang lebih kecil dari pada pivot tersebut terletak disebelah kirinya.. Dan elemen yang lain yang lebih besar dari pada pivot tersebut terletak disebelah kanannya..
Sehingga dengan demikian telah terbentuk dua sublist, yang terletak disebelah kiri dan kanan pivot.. Lalu pada sublist kiri dan kanan kita anggap sebuah list baru dan kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi. Sehingga di dalamnya telah terjadi proses rekursif..
Nah lho? Ngerti gG..? Hehee.. Gini deh..
Q kasi'in contohnya aj.. Sapa tau lebih jelas..
Misalnya.. Kita punya data belum terurut seperti di bawah ini..

22 10 15 3 8 2

Nah, ceritanya kita bakal ngurut'in nie data secara ascending dengan Quick Sort..

Langkah 1
Pivot terletak di tengah2 data tersebut
jumlah data di atas brapa? 6 kan? nah.. Jadi pivotnya terletak di elemen ke-3..
Pivot = 15..
Sekarang untuk dua sublistnya aku kasi nama deh.. Yang tugas ngecek disebelah kiri aku kasi' nama Mr. A truz yang tugas ngecek disebelah kanan aku kasi' nama Mr. B..
Inget.. Dari penjelasan tadi, sublist yang di kiri musti lebih kecil dari pivot truz sublist yang di kanan musti lebih besar dari pivot..

Mr.A<-----
22 10 | 15 |3 8 2
----->Mr.B


Mr.A berhenti di elemen pertama, karena dia menemukan angka 22 lebih besar dari pivot (15)..
Dan J berhenti di elemen ke 6, karena dia menemukan angka 2 lebih kecil dari pivot (15)..
Maka program akan menukar posisi di elemen pertama dengan elemen keenam.. Artinya posisi 22 ditukar dengan 2.. Jadi urutannya sekarang..
2 10 15 3 8 22

Langkah 2


Mr.A<----
2 10 | 15 | 3 8 22
------>Mr.B

Mr A berhenti di elemen ketiga, karena dia menemukan angka 15 lebih besar/sama dengan pivot (15).. eNd Mr.B berhenti di elemen ke 5, karena dia nemu'in elemen yang lebih kecil dari pivot(15)..
program nuker lagi nie, posisinya 15, dituker dengan posisinya 8.. Jadi urutannya..
2 10 8 3 15 22

Langkah 3
Karena pivotnya yang terpindah pada langkah ke-2 tadi, sekarang program akan membentuk 2 sublist baru..
Jadi pivotnya sekarang adalah 8..

Mr.A<----
2 10 | 8 | 3 15 22
-------->Mr.B

Mr. A berhenti pada elemen ke 2, karena dia nemu'in 10 lebih besar dari pivot (8).. Truz, sie Mr.B berhenti pada elemen ke 4, karena dia nemu'in 3 yang nilainya lebih kecil dari pivot(8)..
Slanjutnya program nuker, posisi 10 dengan 3.. Maka urutannya menjadi..
2 3 8 10 15 22

FINISh.. Nah data sudah terurut secara ascending kan..
Yea, walaupun terlihat rumit tapi dalam kenyataannya, program ini sangat cepat dalam mengurutkan data dibandingkan dengan program lain..

Tidak ada komentar:

Posting Komentar