1. Mengapa Pengurutan Data Itu Penting?
Pengurutan (sorting) adalah operasi fundamental komputer. Data yang terurut memungkinkan pencarian instan (seperti Binary Search), mempermudah deteksi data duplikat, dan menyajikan laporan yang nyaman dibaca oleh manusia.
2. Logika Bubble Sort (Pengurutan Gelembung)
Bubble Sort adalah algoritma pengurutan paling intuitif: ia membandingkan dua elemen yang bersebelahan; jika elemen kiri lebih besar dari elemen kanan, posisinya ditukar (swap). Proses ini diulang hingga elemen terbesar mengapung (bubble up) ke posisi paling belakang.
| 1 | function bubbleSort(arr) { |
| 2 | const len = arr.length; |
| 3 | for (let i = 0; i < len; i++) { |
| 4 | for (let j = 0; j < len - 1 - i; j++) { |
| 5 | if (arr[j] > arr[j + 1]) { |
| 6 | // Tukar posisi (Swap) |
| 7 | const temp = arr[j]; |
| 8 | arr[j] = arr[j + 1]; |
| 9 | arr[j + 1] = temp; |
| 10 | } |
| 11 | } |
| 12 | } |
| 13 | return arr; |
| 14 | } |
| 15 | |
| 16 | console.log(bubbleSort([64, 34, 25, 12, 22, 11, 90])); |
3. Built-in Sort & Custom Comparator
Di JavaScript, pemanggilan `.sort()` secara default mengurutkan berdasarkan urutan alfabet/string Unicode (sehingga `[10, 2, 5].sort()` menjadi `[10, 2, 5]` karena karakter '1' muncul sebelum '2'!). Untuk mengurutkan angka atau object, kita HARUS memberikan fungsi komparator.
| 1 | const angka = [10, 2, 5, 80, 1]; |
| 2 | |
| 3 | // Mengurutkan Angka Ascending (Kecil ke Besar): (a, b) => a - b |
| 4 | angka.sort((a, b) => a - b); |
| 5 | console.log(angka); // [1, 2, 5, 10, 80] |
| 6 | |
| 7 | // Mengurutkan Object Berdasarkan Harga Termurah |
| 8 | const produk = [ |
| 9 | { nama: "Kopi", harga: 25000 }, |
| 10 | { nama: "Teh", harga: 10000 }, |
| 11 | { nama: "Jus", harga: 30000 } |
| 12 | ]; |
| 13 | |
| 14 | produk.sort((a, b) => a.harga - b.harga); |
| 15 | console.log(produk); |
Mengapa `[100, 25, 5].sort()` di JavaScript tanpa parameter fungsi menghasilkan `[100, 25, 5]` bukan `[5, 25, 100]`?