KuloDev
1 Hari
0 XP
intermediate20 menitModul: 06-algorithms-problem-solving

Pengurutan Data: Dari Bubble Sort hingga Built-in Sort

Memahami mekanisme pengurutan data, perbandingan komparator kustom, dan cara kerja algoritma modern (Timsort / QuickSort).

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.

Implementasi Bubble Sort
javascript
1function 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
16console.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.

Fungsi Komparator di JavaScript
javascript
1const angka = [10, 2, 5, 80, 1];
2
3// Mengurutkan Angka Ascending (Kecil ke Besar): (a, b) => a - b
4angka.sort((a, b) => a - b);
5console.log(angka); // [1, 2, 5, 10, 80]
6
7// Mengurutkan Object Berdasarkan Harga Termurah
8const produk = [
9 { nama: "Kopi", harga: 25000 },
10 { nama: "Teh", harga: 10000 },
11 { nama: "Jus", harga: 30000 }
12];
13
14produk.sort((a, b) => a.harga - b.harga);
15console.log(produk);
Kuis Pemahaman
+10 XP

Mengapa `[100, 25, 5].sort()` di JavaScript tanpa parameter fungsi menghasilkan `[100, 25, 5]` bukan `[5, 25, 100]`?

Selesaikan Materi Ini?

Dapatkan +25 XP dan simpan progres belajarmu.