0% menganggap dokumen ini bermanfaat (0 suara)
467 tayangan4 halaman

Penjelasan Metode Quick Sort

Dokumen tersebut menjelaskan algoritma quicksort dengan memilih sebuah elemen pivot untuk memecahkan list menjadi dua bagian dimana elemen di sebelah kiri lebih kecil dari pivot dan elemen di sebelah kanan lebih besar dari pivot, kemudian menerapkan quicksort secara rekursif pada kedua bagian tersebut hingga mencapai ukuran list 1.

Diunggah oleh

Fikri Abdul Rahman
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
467 tayangan4 halaman

Penjelasan Metode Quick Sort

Dokumen tersebut menjelaskan algoritma quicksort dengan memilih sebuah elemen pivot untuk memecahkan list menjadi dua bagian dimana elemen di sebelah kiri lebih kecil dari pivot dan elemen di sebelah kanan lebih besar dari pivot, kemudian menerapkan quicksort secara rekursif pada kedua bagian tersebut hingga mencapai ukuran list 1.

Diunggah oleh

Fikri Abdul Rahman
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd

Penjelasan Quick Sort

Fungsi kedua adalah fungsi quicksort itu sendiri adalah : 1. Pilih sebuah elemen pivot. 2. Panggil fungsi partisi, yang akan memindahkan semua elemen yang kurang dari pivot ke kiri, dan yang lebih dari pivot ke kanan. Kita akan mendapatkan lokasi pivot yang baru. . !ecara rekursif panggil fungsi quicksort terhadap elemen"elemen di sebelah kiri dan sebelah kanan pivot. #. Fungsi terakhir yang tidak $a%ib adalah yang memanggil basis rekursi.

Penjelasan Contoh Quick Sort

Saya akan menjelaskan algoritmanya menggunakan gambar. Pertama perhatikan bahwa kita bisa memecah list menjadi dua bagian, tidak peduli urutan di bagian kiri dan kanan. Jadi jika kita memiliki list:

Maka list tersebut bisa dipecah menjadi:

atau seperti ini:

Tergantung algoritma yang kita gunakan dalam memecah list. Saya contohkan dengan algoritma yang saya pilih ini. Saya memiliki list berikut 6, , !, ", #, $, %, &:

Saya pilih " sebagai pi'ot (sembarang elemen boleh menjadi pi'ot, saya pilih yang kira)kira di tengah*. Tukarkan pi'ot ini dengan elemen terakhir.

+asilnya seperti ini: 6,, , !, &, #, $, %, " (pi'ot*. Pada elemen pertama saya beri tanda bintang (,*, akan saya jelaskan nanti gunanya.

Sekarang kita akan mulai memproses list dari elemen pertama sampai elemen sebelum pi'ot. Setiap kali menemukan elemen yang kurang dari pi'ot, saya pindahkan (kita tukar* dengan elemen yang diberi tanda bintang. -alu bintang dipindahkan satu elemen ke kanan. .lemen pertama (6* lebih besar dari pi'ot ("*, jadi kita cek elemen berikutnya yaitu . /arena kurang dari pi'ot, kita tukarkan dengan elemen yang bertanda ,. +asilnya:

+asilnya: , ,6, !, &, #, $, %, " (pi'ot*. 0ngat bahwa setelah menukar, tanda , dipindah satu elemen ke kanan.

1erikutnya kita lihat bahwa ! lebih dari pi'ot, jadi kita biarkan. .lemen & kurang dari pi'ot, sehingga perlu ditukar dengan ,.

2an hasilnya adalah: , &, ,!, 6, #, $, %, " (pi'ot*.

.lemen # juga kurang dari pi'ot, jadi kita perlu menukarnya.

+asilnya adalah: , &, #, ,6, !, $, %, " (pi'ot*.

2an yang terakhir yang kurang dari pi'ot adalah $.

+asilnya adalah: , &, #, $, ,!, 6, %, " (pi'ot*.

2an langkah terakhir adalah menukar posisi , dengan pi'ot:

+asil akhirnya adalah list yang terbagi dua (semua elemen di kiri " lebih kecil dari " dan semua elemen di kanan " lebih besar dari "*: , &, #, $, ", 6, %, !:

3tau jika digambarkan, yang saya lakukan adalah seperti ini: memecah list awal, menjadi dua list, yang satu berisi elemen)elemen yang lebih kecil dari ", dan list yang berisi elemen)elemen yang lebih besar atau sama dengan ".

Skrip Program void _quicksort(int *elements, int left, int right) { int pivotposition; /* jika left > right, !erarti list kosong */ if (left " right) { pivotposition partition(elements, left, right); /*urutkan elemen#elemen di kiri pivot*/ _quicksort(elements, left, pivotposition # $); /*urutkan elemen#elemen di kanan pivot*/ _quicksort(elements, pivotposition % $, right); & &

& 'ome (

Anda mungkin juga menyukai