Algoritma pengurutan menyusun ulang item yang sama ke dalam urutan tertentu, misalnya dari yang terkecil ke yang terbesar. Jika ingin jawaban singkatnya dulu, bubble sort itu sederhana tetapi biasanya terlalu lambat untuk daftar besar, merge sort memberi performa yang andal, dan quick sort sering cepat dalam praktik ketika partisinya tetap cukup seimbang.
Pertanyaan yang tepat bukan "algoritma pengurutan mana yang terbaik?" melainkan "terbaik dalam kondisi apa?" Bubble sort mengajarkan pertukaran lokal, merge sort menunjukkan divide-and-conquer dengan jelas, dan quick sort menunjukkan mengapa kecepatan rata-rata bisa sangat baik meskipun tanpa jaminan kasus terburuk.
Apa yang Dilakukan Algoritma Pengurutan
Diberikan sebuah daftar seperti , algoritma harus mengembalikan nilai yang sama dalam urutan yang benar:
Kedengarannya sederhana, tetapi algoritma yang berbeda mencapai hasil itu dengan cara yang sangat berbeda. Perbedaan utamanya adalah:
- bagaimana item dipindahkan
- berapa banyak perbandingan atau pertukaran yang biasanya digunakan
- berapa banyak memori tambahan yang dibutuhkan
- seberapa sensitif algoritma terhadap pola input yang buruk
Bubble Sort: Pertukaran Berulang Antar-Tetangga
Bubble sort berjalan menyusuri daftar dan menukar item yang bersebelahan jika urutannya salah. Setelah satu lintasan penuh, item terbesar yang belum terurut akan "mengambang" ke bagian akhir.
Pada , lintasan pertama terlihat seperti ini:
Lalu proses ini diulang pada bagian yang masih belum terurut sampai tidak ada pertukaran lagi yang diperlukan.
Bubble sort terutama berguna untuk belajar. Secara umum, kompleksitas waktunya adalah , sehingga jumlah perbandingan bertambah cepat saat daftar makin besar. Untuk contoh kecil di kelas, itu tidak masalah. Untuk pekerjaan pengurutan yang serius, biasanya ini bukan pilihan yang tepat.
Merge Sort: Bagi, Urutkan, Lalu Gabungkan
Merge sort menggunakan ide divide-and-conquer. Algoritma ini membagi daftar menjadi bagian-bagian yang lebih kecil, mengurutkan bagian-bagian itu, lalu menggabungkan kembali potongan yang sudah terurut.
Untuk , salah satu cara melihatnya adalah:
Urutkan setiap setengah bagian:
Lalu gabungkan dua bagian yang sudah terurut:
Kekuatan utama merge sort adalah keterprediksiannya. Waktu jalannya adalah dalam analisis biasa, bukan hanya rata-rata. Biaya utamanya adalah memori: implementasi umum berbasis array menggunakan ruang tambahan saat proses penggabungan.
Quick Sort: Partisi di Sekitar Pivot
Quick sort juga menggunakan divide-and-conquer, tetapi dengan cara yang berbeda. Algoritma ini memilih sebuah pivot, menempatkan item yang lebih kecil di satu sisi dan item yang lebih besar di sisi lain, lalu mengurutkan kedua sisi itu secara rekursif.
Dengan pivot pada , salah satu partisi yang mungkin adalah:
Sekarang bagian kiri dan kanan menjadi jauh lebih kecil, sehingga proses pengurutan selesai dengan cepat.
Quick sort sering cepat dalam praktik karena banyak implementasi melakukan partisi secara in-place dan memperkecil masalah dengan cepat ketika pivot membagi daftar dengan cukup baik. Tetapi kondisi itu penting. Jika pemilihan pivot berulang kali buruk, misalnya terus menghasilkan satu sisi yang sangat kecil dan satu sisi yang hampir penuh, maka kasus terburuknya menjadi .
Bubble Sort vs Merge Sort vs Quick Sort
| Algoritma | Ide inti | Waktu tipikal | Waktu kasus terburuk | Memori tambahan |
|---|---|---|---|---|
| Bubble sort | Pertukaran berulang antar-item bersebelahan | Rendah | ||
| Merge sort | Bagi, urutkan tiap setengah, lalu gabungkan | Lebih tinggi pada implementasi array yang umum | ||
| Quick sort | Partisi di sekitar pivot | Sering | Sering lebih rendah daripada merge sort |
Jika ingin satu kesimpulan praktis, ini intinya: bubble sort adalah algoritma untuk pembelajaran, merge sort adalah pilihan yang stabil dan dapat diprediksi, dan quick sort sering menjadi pilihan cepat dalam praktik ketika implementasinya menangani pivot dengan baik.
Satu Contoh yang Dikerjakan pada Daftar yang Sama
Gunakan daftar yang sama:
Bubble sort terus memperbaiki kesalahan lokal. Algoritma ini tidak "melihat" seluruh struktur, jadi mungkin membutuhkan banyak lintasan.
Merge sort terlebih dahulu memecah masalah menjadi bagian-bagian kecil yang sudah terurut, lalu menggabungkannya. Struktur inilah yang membuat performanya tetap andal saat daftar bertambah besar.
Quick sort mencoba membuat satu pemisahan yang kuat sejak awal. Jika pemisahannya cukup seimbang, sisa pekerjaannya cepat menyusut.
Inilah sebabnya siswa sering lebih mudah mengingat angka kompleksitas setelah melihat satu daftar bergerak melalui setiap metode. Angka-angka itu bukan sekadar label acak. Angka-angka itu mencerminkan bagaimana algoritma mengurangi ketidakteraturan.
Kesalahan Umum Saat Membandingkan Algoritma Pengurutan
Menganggap Quick Sort Selalu Lebih Cepat
Quick sort sering cepat dalam praktik, tetapi tidak dijamin paling cepat dalam setiap kasus. Perilaku pivot yang buruk bisa sangat merugikannya.
Menganggap Semua Algoritma Itu Sama
Merge sort dan quick sort bisa memiliki laju pertumbuhan rata-rata yang sama tanpa berperilaku sama dalam penggunaan memori, jaminan kasus terburuk, atau detail implementasi.
Menggunakan Bubble Sort Karena Mudah Ditulis
Mudah ditulis tidak sama dengan cocok digunakan. Untuk demo kecil, bubble sort tidak masalah. Untuk input nyata yang lebih besar, biasanya algoritma ini melakukan pekerjaan yang tidak perlu.
Melupakan Model Input
Perbandingan ini biasanya mengasumsikan pengurutan berbasis perbandingan pada input umum. Jika datanya memiliki struktur khusus, algoritma pengurutan non-perbandingan seperti counting sort bisa mengubah keputusan sepenuhnya.
Kapan Setiap Algoritma Pengurutan Digunakan
Bubble sort sebagian besar digunakan untuk pembelajaran, penelusuran langkah demi langkah, dan contoh yang sangat kecil ketika kejelasan lebih penting daripada performa.
Merge sort digunakan ketika perilaku yang konsisten itu penting dan memori tambahan masih dapat diterima. Algoritma ini juga cocok secara alami untuk linked list dan untuk situasi ketika stable sorting penting, tergantung implementasinya.
Quick sort digunakan ketika kecepatan praktis itu penting dan implementasinya memiliki strategi pivot yang baik atau perlindungan cadangan. Banyak strategi pengurutan di pustaka standar menggunakan ide quick sort bersama pengaman, bukan versi buku teks yang naif.
Cara Cepat Mengingat Perbedaannya
Ingat berdasarkan gerakannya:
- bubble sort memperbaiki tetangga
- merge sort membangun bagian-bagian terurut
- quick sort membagi di sekitar pivot
Gambaran mental itu lebih berguna daripada menghafal tiga nama dan tiga rumus.
Coba Versi Anda Sendiri
Ambil daftar dan telusuri satu lintasan bubble sort, satu siklus bagi-dan-gabung dari merge sort, dan satu partisi pivot untuk quick sort. Jika Anda bisa menjelaskan mengapa daftar berubah secara berbeda pada tiap kasus, berarti konsepnya sudah benar-benar dipahami.
Butuh bantuan mengerjakan soal?
Unggah pertanyaanmu dan dapatkan solusi terverifikasi langkah demi langkah dalam hitungan detik.
Buka GPAI Solver →