PERTEMUAN 11
Sorting Algorithms
SORTING ALGORITHMS
DASAR
Mengurutkan Data untuk Efisiensi
Review
Mengingat Kembali Searching
🔍Sequential Search: Cek satu per satu, data boleh acak.
Binary Search: Sangat cepat, tapi...
Syarat Binary Search: Data harus terurut!
Motivasi
Kenapa Sorting?

Data nilai: 78, 90, 65, 88, 70

Cari nilai 88. Mana lebih cepat?

Data Acak
Data Terurut
Konsep
Apa itu Sorting?

Proses mengatur sekumpulan data ke dalam urutan tertentu berdasarkan kriteria.

⬆️Ascending: Kecil ke Besar (1, 2, 3...)
⬇️Descending: Besar ke Kecil (9, 8, 7...)
Tujuan
Tujuan Sorting
🚀Mempermudah pencarian (Binary Search).
📊Mempermudah analisis data (Median, Min/Max).
💻Digunakan di hampir semua sistem (E-commerce, Ranking).
Ilustrasi
Ilustrasi Sederhana

Data Awal:

5
3
8
1

Setelah Sorting (Ascending):

1
3
5
8
Aktivitas
Aktivitas Kelas

Urutkan angka berikut secara manual:

7, 2, 5, 1

Pikirkan: Bagaimana langkah-langkah yang otak kalian lakukan?

Bubble Sort
Konsep Bubble Sort
👉Bandingkan dua elemen bersebelahan.
🔄Tukar posisi jika urutannya salah.
🫧Elemen terbesar akan pelan-pelan "naik" ke posisi akhir.
Visualisasi
Visualisasi Bubble Sort
Jumlah Data (3-10):
Klik Mulai untuk simulasi.
Cara Kerja
Cara Kerja Bubble Sort
🔁Loop Luar: Mengulang proses untuk setiap elemen.
➡️Loop Dalam: Melakukan perbandingan dari awal ke akhir.

Setiap satu iterasi loop luar selesai, satu elemen terbesar sudah pasti berada di posisi yang benar.

Kode C++
Implementasi Bubble Sort
for(int i = 0; i < n-1; i++) {
    for(int j = 0; j < n-i-1; j++) {
        if(arr[j] > arr[j+1]) {
            swap(arr[j], arr[j+1]);
        }
    }
}
Analisis
Kelebihan & Kekurangan

Kelebihan

  • Sangat mudah dipahami.
  • Sederhana untuk ditulis.

Kekurangan

  • Lambat untuk data besar.
  • Banyak melakukan pertukaran (swap).
Selection Sort
Konsep Selection Sort
🔎Cari elemen terkecil dalam array.
📍Tukar dengan elemen di posisi paling depan yang belum terurut.
🎯"Pilih lalu letakkan".
Visualisasi
Visualisasi Selection Sort
Jumlah Data (3-10):
Klik Mulai untuk simulasi.
Cara Kerja
Cara Kerja Selection Sort
📉Tentukan Minimum: Anggap elemen pertama sebagai minimum.
🔄Tukar Sekali: Hanya satu kali swap per iterasi loop luar.
Kode C++
Implementasi Selection Sort
for(int i = 0; i < n-1; i++) {
    int min_idx = i;
    for(int j = i+1; j < n; j++) {
        if(arr[j] < arr[min_idx])
            min_idx = j;
    }
    swap(arr[i], arr[min_idx]);
}
Insight
Wawasan Selection Sort
Jauh lebih sedikit proses swap dibanding Bubble Sort.
👌Tetap sederhana dan mudah diimplementasikan.
Insertion Sort
Konsep Insertion Sort
🃏Mirip seperti menyusun kartu di tangan.
📥Ambil satu elemen, lalu sisipkan di posisi yang tepat.
↔️Geser elemen lain untuk memberi ruang.
Visualisasi
Visualisasi Insertion Sort
Jumlah Data (3-10):
Klik Mulai untuk simulasi.
Cara Kerja
Cara Kerja Insertion Sort
1Ambil satu elemen sebagai "key".
2Bandingkan dengan elemen-elemen sebelumnya.
3Geser elemen yang lebih besar ke kanan.
4Sisipkan "key" di posisi yang kosong.
Kode C++
Implementasi Insertion Sort
for(int i = 1; i < n; i++) {
    int key = arr[i];
    int j = i - 1;

    while(j >= 0 && arr[j] > key) {
        arr[j + 1] = arr[j];
        j--;
    }
    arr[j + 1] = key;
}
Insight
Wawasan Insertion Sort
Sangat efektif untuk data berjumlah kecil.
💪Paling cepat jika data sudah hampir terurut (adaptif).
Perbandingan
Perbandingan Algoritma
Algoritma Cara Utama Karakteristik
Bubble Tukar Tetangga Paling Sederhana
Selection Pilih Minimum Swap Minimal
Insertion Sisip & Geser Adaptif (Cepat untuk data hampir urut)
Diskusi
Mari Berdiskusi

Menurut kalian:

  • Mana yang paling mudah diimplementasikan?
  • Mana yang terasa paling cepat?
Pikirkan berapa banyak langkah yang dibutuhkan jika datanya ada 100? Bagaimana kalau 1 Juta?
Praktikum
Instruksi Praktikum

Buka IDE kalian dan implementasikan:

💻Bubble Sort.
💻Pilih satu: Selection atau Insertion Sort.

Gunakan array dengan isi bebas untuk pengujian.

Eksperimen
Uji Coba Kritikal

Coba algoritma kalian dengan kondisi:

  • Data Acak: [4, 1, 3, 2]
  • Data Terurut: [1, 2, 3, 4]
  • Data Terbalik: [4, 3, 2, 1]
Refleksi
Pertanyaan Praktikum
Mana yang paling cepat saat dijalankan?
Mana yang kodenya paling pendek?
Apakah ada perbedaan mencolok untuk data terbalik?
Ringkasan
💡 Kesimpulan
🔹Sorting sangat penting untuk efisiensi sistem.
🔹Bubble, Selection, dan Insertion adalah algoritma dasar yang wajib dipahami.
🔹Setiap algoritma memiliki karakteristik unik (swap minimal, adaptif, dsb).
Refleksi
Tanya Diri

Algoritma mana yang menurutmu paling "cerdas"? Kenapa?

Next
Preview Berikutnya

Pertemuan 12: Sorting Lanjutan

  • Merge Sort & Quick Sort.
  • Analisis Performa mendalam.
  • Kapan menggunakan algoritma yang mana?