PERTEMUAN 12
Sorting Lanjutan
SORTING LANJUTAN:
Memilih Algoritma yang Tepat
Dari “bisa” → “efisien”
Review
Review Cepat (Interactive)

Algoritma sebelumnya:

🫧Bubble Sort
📍Selection Sort
📥Insertion Sort
Mana paling mudah?
Mana paling cepat?
Recall
Recall Insight
🔄Bubble: Banyak swap.
🔎Selection: Minim swap.
🃏Insertion: Adaptif (mirip kartu).
Problem
Masalah Inti

“Semua bisa sorting…”

👉 Tapi mana yang harus dipakai?

Discovery
Eksperimen Cepat

Urutkan angka berikut di otakmu:

Kasus A:

2, 3, 4, 5, 1

Kasus B:

5, 4, 3, 2, 1

Mana yang lebih cepat?

Diskusi
Diskusi Hasil
Hampir terurut: Cepat.
Terbalik: Lambat.
Insight
Insight Penting
👉 Performa tergantung kondisi data
Efisiensi
Apa yang Kita Ukur?
🔎Perbandingan
🔄Perpindahan (swap/geser)
⏱️Waktu eksekusi
Analogi
Analogi Nyata

Tukar buku vs geser buku

Mana lebih mahal?

Perbandingan
Perbandingan Intuitif
Algoritma Kuat Lemah
Bubble Mudah Lambat
Selection Swap sedikit Tetap lambat
Insertion Adaptif Buruk di acak besar
Scaling
Scaling Problem
n = 10 → OK
n = 1.000.000 → ?
      
Insight
Insight Penting
👉 Bandingkan satu-satu tidak cukup
Ide
Ide Baru
👉 Pecah masalah (Divide & Conquer)
Merge Sort
Konsep Merge Sort
↔️Bagi data jadi dua
📈Urutkan masing-masing
🤝Gabungkan
Visualisasi
Visualisasi Merge Sort
Jumlah Data (3-10):
Klik Mulai untuk simulasi.
Analisis
Kenapa Cepat?
🚫Tidak bandingkan semua pasangan.
📦Bekerja dalam bagian kecil.
Analisis
Trade-off Merge Sort
Kelebihan Kekurangan
Cepat untuk data besar Butuh memori tambahan
Aplikasi
Kapan Dipakai?
🏢Data besar.
⚖️Sorting Stabil.
💾Tidak masalah tambahan memori.
Shell Sort
Ide Shell Sort
“Bagaimana kalau insertion… tapi lompat jauh dulu?”
Shell Sort
Intuisi Shell Sort
🏃Bandingkan elemen berjauhan.
🤏Lalu dipersempit secara bertahap.
Visualisasi
Visualisasi Shell Sort
Jumlah Data (3-10):
Klik Mulai untuk simulasi.
Shell Sort
Posisi Shell Sort
🚀Lebih cepat dari Insertion.
👌Lebih sederhana dari Merge.
Quick Sort
Konsep Quick Sort
🎯Pilih satu elemen sebagai Pivot
↔️Partisi: Kecil di kiri, Besar di kanan
🔁Ulangi secara rekursif
Quick Sort
Kenapa Quick Sort?
Sangat cepat di kasus rata-rata.
💾In-place (tidak butuh array tambahan).
🌍Paling banyak dipakai di library standar.
Visualisasi
Visualisasi Quick Sort
Jumlah Data (3-10):
Klik Mulai untuk simulasi.
Ringkasan
Semua Algoritma
Algoritma Tipe
Bubble/Selection/Insertion Sederhana (O(N²))
Shell Optimasi Insertion
Merge Divide & Conquer (Stabil)
Quick Divide & Conquer (Cepat)
Studi Kasus 1
Kasus: Data Kecil

Data kecil (n < 20)

👉 Jawaban: Insertion

Studi Kasus 2
Kasus: Hampir Terurut

Data sudah 90% terurut

👉 Jawaban: Insertion

Studi Kasus 3
Kasus: Data Besar

Data 1 Juta elemen

👉 Jawaban: Merge

Praktikum
Instruksi Praktikum

Implementasikan:

💻Merge Sort (Download)
💻Shell Sort (Download)
💻Quick Sort (Download)
Eksperimen
Uji Data

Coba dengan:

🤏Data kecil
🏢Data besar (10.000+)
📏Hampir terurut
Timer
Ukur Waktu

Gunakan library <chrono> di C++:

auto s = chrono::high_resolution_clock::now();
// sorting...
auto e = chrono::high_resolution_clock::now();
cout << chrono::duration<double, milli>(e-s).count();
Diskusi
Diskusi Hasil
Insight
Insight Utama
👉 Tidak ada algoritma terbaik.
Yang ada: algoritma yang tepat.
Aplikasi
Dunia Nyata
📦Library sort()
🗄️Database Indexing
🏆Ranking System
Refleksi
Waktunya Refleksi

Pilihan kalian?

Kenapa?

Next
Preview Berikutnya

👉 Stack (LIFO)