Sorting — dari bubble sampai quick sort
Lima algoritma pengurutan yang paling sering keluar di ujian, lengkap dengan animasi langkah demi langkah.
Sorting mengubah urutan elemen menjadi menaik (ascending) atau menurun (descending). Hampir semua algoritma lain memanfaatkannya: binary search butuh data terurut, mencari duplikat jadi mudah setelah diurutkan, dan seterusnya.
Coba putar animasinya. Warna kuning = sedang dibandingkan, merah = ditukar, hijau = sudah di posisi akhir.
Algoritma O(n²): sederhana tapi lambat
Bubble sort membandingkan pasangan bersebelahan dan menukarnya bila salah urutan. Setelah putaran ke-, elemen terbesar ke- “menggelembung” ke ujung kanan. Optimasi penting: jika satu putaran tidak ada pertukaran, berhenti.
Selection sort mencari minimum dari bagian yang belum urut, lalu menaruhnya di depan. Jumlah perbandingannya selalu , tapi jumlah pertukarannya paling banyak . Berguna kalau menulis ke memori itu mahal.
Insertion sort seperti mengurutkan kartu di tangan: ambil satu kartu, sisipkan ke posisi yang tepat di bagian kiri yang sudah urut. Pada data yang hampir urut, insertion sort mendekati . Coba tombol “Hampir urut” di atas.
Algoritma O(n log n): divide and conquer
Merge sort membagi array jadi dua, mengurutkan masing-masing secara rekursif, lalu menggabungkan dua bagian terurut. Pembagian menghasilkan level, dan tiap level butuh untuk merge:
Quick sort memilih pivot, lalu mempartisi: elemen lebih kecil ke kiri, lebih besar ke kanan. Pivot langsung berada di posisi akhirnya. Rata-rata , tapi jika pivot selalu elemen terkecil/terbesar (misalnya data sudah urut dan pivot = elemen terakhir), kompleksitasnya jatuh ke .
Ringkasan
| Algoritma | Terbaik | Rata-rata | Terburuk | Memori | Stabil? |
|---|---|---|---|---|---|
| Bubble | ya | ||||
| Selection | tidak | ||||
| Insertion | ya | ||||
| Merge | ya | ||||
| Quick | tidak |
Latihan: Urutkan Array (merge sort), Merge Two Sorted Arrays.