π§ 1. Pengertian Sorting
6
π Definisi
Sorting adalah proses mengatur data dalam urutan tertentu, biasanya:
- Ascending (menaik: kecil β besar)
- Descending (menurun: besar β kecil)
π§ Narasi Konseptual
Bayangkan kamu memiliki buku berserakan di meja:
- Tanpa sorting β sulit mencari buku
- Dengan sorting β buku tersusun rapi berdasarkan abjad atau kategori
β‘οΈ Sorting membuat data lebih mudah dicari, dianalisis, dan digunakan.
π― 2. Tujuan Sorting
π Tabel Tujuan Sorting
| Tujuan | Penjelasan |
|---|---|
| Memudahkan pencarian | Data lebih terstruktur |
| Meningkatkan efisiensi | Algoritma pencarian lebih cepat |
| Analisis data | Statistik lebih mudah |
| User experience | Data lebih rapi ditampilkan |
π§ Narasi
Sorting bukan hanya estetika, tetapi fondasi efisiensi komputasi, terutama pada data besar.
βοΈ 3. Kategori Algoritma Sorting
π Tabel Kategori
| Kategori | Contoh |
|---|---|
| Simple Sorting | Bubble, Selection, Insertion |
| Efficient Sorting | Merge Sort, Quick Sort |
| Hybrid Sorting | TimSort (Python, Java) |
π 4. Bubble Sort
5
π Konsep
Bubble Sort membandingkan elemen bersebelahan dan menukar jika salah urut.
π§ Narasi
Seperti gelembung air:
- Elemen terbesar βnaikβ ke akhir secara bertahap
π» Contoh
for(int i=0; i<n; i++){
for(int j=0; j<n-1; j++){
if(arr[j] > arr[j+1]){
swap(arr[j], arr[j+1]);
}
}
}
β±οΈ Kompleksitas
- Best: O(n)
- Worst: O(nΒ²)
π 5. Selection Sort
6
π Konsep
Mencari elemen terkecil lalu menukarnya ke posisi awal.
π§ Narasi
Seperti memilih juara:
- Cari yang paling kecil
- Taruh di posisi paling depan
π» Contoh
for(int i=0; i<n-1; i++){
int min = i;
for(int j=i+1; j<n; j++){
if(arr[j] < arr[min]){
min = j;
}
}
swap(arr[i], arr[min]);
}
β±οΈ Kompleksitas
β‘οΈ O(nΒ²) (konsisten)
π 6. Insertion Sort
6
π Konsep
Menyusun elemen satu per satu ke posisi yang tepat.
π§ Narasi
Seperti menyusun kartu remi:
- Ambil satu kartu
- Masukkan ke posisi yang benar
π» Contoh
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;
}
β±οΈ Kompleksitas
- Best: O(n)
- Worst: O(nΒ²)
β‘ 7. Merge Sort
5
π Konsep
Menggunakan pendekatan divide and conquer:
- Membagi data
- Mengurutkan
- Menggabungkan kembali
π§ Narasi
Seperti membagi tugas:
- Pecah masalah kecil
- Selesaikan
- Gabungkan hasil
β±οΈ Kompleksitas
β‘οΈ O(n log n)
β‘ 8. Quick Sort
7
π Konsep
Menggunakan pivot untuk membagi data:
- Kiri < pivot
- Kanan > pivot
π§ Narasi
Seperti memilih βpatokanβ:
- Data kecil di kiri
- Data besar di kanan
β±οΈ Kompleksitas
- Best: O(n log n)
- Worst: O(nΒ²)
π 9. Perbandingan Algoritma Sorting
π Tabel Perbandingan
| Algoritma | Best | Average | Worst | Stabil |
|---|---|---|---|---|
| Bubble Sort | O(n) | O(nΒ²) | O(nΒ²) | Ya |
| Selection Sort | O(nΒ²) | O(nΒ²) | O(nΒ²) | Tidak |
| Insertion Sort | O(n) | O(nΒ²) | O(nΒ²) | Ya |
| Merge Sort | O(n log n) | O(n log n) | O(n log n) | Ya |
| Quick Sort | O(n log n) | O(n log n) | O(nΒ²) | Tidak |
π§ 10. Stabil vs Tidak Stabil Sorting
π Definisi
- Stabil: urutan data sama tetap terjaga
- Tidak stabil: urutan bisa berubah
π 11. Visual Perbandingan Sorting
6
π§ͺ 12. Studi Kasus Nyata
π Sistem Nilai Mahasiswa
- Sorting nilai tertinggi β ranking
- Sorting abjad β daftar mahasiswa
- Sorting waktu β log aktivitas
π» 13. Implementasi Sederhana (Python)
arr = [5, 2, 9, 1, 5, 6]arr.sort() # built-in sorting
print(arr)
π§ 14. Kenapa Sorting Penting?
π Narasi
Sorting adalah dasar dari:
- Search (Binary Search)
- Database indexing
- Machine learning preprocessing
- Big data analytics
π 15. Ringkasan Materi
- Sorting adalah proses mengurutkan data
- Ada banyak algoritma dengan kompleksitas berbeda
- Divide and conquer (Merge & Quick Sort) sangat efisien
- Sorting penting untuk optimasi sistem
- Digunakan di hampir semua aplikasi komputer
π 16. Latihan / Diskusi
βοΈ Soal Teori
- Jelaskan pengertian sorting
- Apa perbedaan Bubble dan Quick Sort?
- Apa itu stable sorting?
π» Soal Praktikum
- Implementasikan Bubble Sort
- Implementasikan Insertion Sort
- Bandingkan waktu eksekusi sorting
π― Penutup
Sorting adalah fondasi penting dalam struktur data dan algoritma karena:
- Meningkatkan efisiensi pencarian
- Digunakan dalam sistem nyata
- Menjadi dasar algoritma lanjutan