TIPS: Rangkuman ini hanya sebagai pemahaman secara umum. Pastikan Anda juga membaca BMP (Buku Materi Pokok) versi cetak atau digital di Ruang Baca Virtual (RBV) untuk pemahaman lebih mendalam.
DILARANG: Memperjualbelikan seluruh konten atau latihan soal yang terdapat di portal ini. Pelanggaran akan dikenakan sanksi sesuai ketentuan yang berlaku.
1. Pengertian Sorting
2. Contoh Kasus Sorting
1. Comparison-Based Sorting
2. Non Comparison-Based Sorting
1. Konsep Dasar
2. Ilustrasi Proses
1. Konsep Dasar
2. Ilustrasi Proses
1. Class dan Fungsi Utama
MergeSort — 82 baris, terdiri dari 1 main program dan 3 fungsi.merge(arr, l, m, r): menggabungkan dua subarray yang sudah terurut.
n1 = m - l + 1 → panjang subarray kiri (L[])n2 = r - m → panjang subarray kanan (R[])2. Fungsi sort dan printArray
sort(arr, l, r): rekursif membagi array menjadi dua bagian, mengurutkan masing-masing, lalu memanggil merge().
m = (l+r)/2 → indeks tengah pembagi array.sort(arr, l, m) → urutkan subarray kiri.sort(arr, m+1, r) → urutkan subarray kanan.merge(arr, l, m, r) → gabungkan keduanya.printArray(arr): menampilkan isi array dengan perulangan for.3. Main Method
class MergeSort {
void merge(int arr[], int l, int m, int r) {
int n1 = m - l + 1;
int n2 = r - m;
int L[] = new int[n1];
int R[] = new int[n2];
for (int i=0; i<n1; ++i) L[i] = arr[l + i];
for (int j=0; j<n2; ++j) R[j] = arr[m + 1 + j];
int i=0, j=0, k=l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) { arr[k] = L[i]; i++; }
else { arr[k] = R[j]; j++; }
k++;
}
while (i < n1) { arr[k] = L[i]; i++; k++; }
while (j < n2) { arr[k] = R[j]; j++; k++; }
}
void sort(int arr[], int l, int r) {
if (l < r) {
int m = (l+r)/2;
sort(arr, l, m);
sort(arr, m+1, r);
merge(arr, l, m, r);
}
}
public static void main(String args[]) {
int arr[] = {12, 11, 13, 5, 6, 7};
MergeSort ob = new MergeSort();
ob.sort(arr, 0, arr.length-1);
// Output: 5 6 7 11 12 13
}
}
1. Class dan Method Sort
CountingSort — 37 baris, terdiri dari method sort dan main.sort(char arr[]): mengurutkan array karakter menggunakan counting-sort.
n = arr.length → panjang array.output[] → array hasil sorting.count[256] → array frekuensi (256 untuk semua karakter ASCII).2. Tahapan dalam Method Sort
for(i=0; i<256; ++i) count[i] = 0; → set semua count ke 0.++count[arr[i]] → hitung jumlah tiap karakter.count[i] += count[i-1] → jumlahkan secara berurutan.output[count[arr[i]]-1] = arr[i] → tempatkan elemen di posisi benar, lalu --count[arr[i]].arr[i] = output[i] → pindahkan hasil ke array asli.3. Main Method dan Contoh Program
class CountingSort {
void sort(char arr[]) {
int n = arr.length;
char output[] = new char[n];
int count[] = new int[256];
for (int i = 0; i < 256; ++i) count[i] = 0;
for (int i = 0; i < n; ++i) ++count[arr[i]];
for (int i = 1; i <= 255; ++i) count[i] += count[i-1];
for (int i = 0; i < n; ++i) {
output[count[arr[i]]-1] = arr[i];
--count[arr[i]];
}
for (int i = 0; i < n; ++i) arr[i] = output[i];
}
public static void main(String args[]) {
CountingSort ob = new CountingSort();
char arr[] = {'g','e','e','k','s','f','o','r','g','e','e','k','s'};
ob.sort(arr);
// Output: Sorted character array is eeeefggkkorss
}
}
eeeefggkkorss.