No 1 A) Algoritme Merge Sort B) Coding Merge Sort :
public class MergeSort {
public static void main(String[] args) { int[] array = {12, 11, 13, 5, 6, 7}; System.out.println("Array sebelum diurutkan:"); printArray(array); mergeSort(array); System.out.println("\nArray setelah diurutkan:"); printArray(array); } // Fungsi untuk mencetak array static void printArray(int[] arr) { int n = arr.length; for (int i = 0; i < n; i++) { System.out.print(arr[i] + " "); } System.out.println(); } // Fungsi utama Merge Sort static void mergeSort(int[] arr) { int n = arr.length; if (n < 2) { return; // Basis dari rekursi: jika array hanya memiliki satu elemen atau kosong, sudah diurutkan. } int mid = n / 2; int[] left = new int[mid]; int[] right = new int[n - mid]; // Mengisi array left dan right for (int i = 0; i < mid; i++) { left[i] = arr[i]; } for (int i = mid; i < n; i++) { right[i - mid] = arr[i]; } // Rekursi untuk mengurutkan bagian kiri dan kanan mergeSort(left); // panggil diri sendiri mergeSort(right); // Menggabungkan dua bagian yang sudah diurutkan merge(arr, left, right); } // Fungsi untuk menggabungkan dua array yang sudah diurutkan static void merge(int[] arr, int[] left, int[] right) { int nL = left.length; int nR = right.length; int i = 0, j = 0, k = 0; // Membandingkan dan menggabungkan elemen-elemen dari left dan right ke array utama while (i < nL && j < nR) { if (left[i] <= right[j]) { arr[k] = left[i]; i++; } else { arr[k] = right[j]; j++; } k++; } // Menyalin elemen yang tersisa (jika ada) dari left ke array utama while (i < nL) { arr[k] = left[i]; i++; k++; } // Menyalin elemen yang tersisa (jika ada) dari right ke array utama while (j < nR) { arr[k] = right[j]; j++; k++; } } } Agar lebih jelas saya sudah buatkan video berikut : Algortime Merge Sort https://bit.ly/3QRF5Qq https://youtu.be/Qao-QZf70-k?si=8eO9xisJYgeqyhU8 Coding Merge Sort https://bit.ly/3MDcg7D https://youtu.be/lsd5dLX93io?si=RtdYN7aqBH_vmaBO Foto foto : Meja dan laptop di rumah No 2 Pengurutan array dengan teknik counting sort : A) Algoritme : 1. Buat array counting dengan ukuran sesuai dengan kisaran nilai yang mungkin dalam array input. 2. Inisialisasi semua elemen counting menjadi 0. 3. Hitung frekuensi masing-masing elemen dalam array input dan simpan dalam array counting. 4. Hitung jumlah kumulatif dari frekuensi dalam array counting. 5. Buat array hasil dengan ukuran yang sama dengan array input. 6. Iterasi melalui array input dari belakang (dari elemen terakhir ke elemen pertama): a. Dapatkan nilai elemen input saat ini. b. Cari indeksnya dalam array counting untuk menentukan posisi di array hasil. c. Tempatkan elemen input ke dalam array hasil pada posisi yang sesuai. d. Kurangi frekuensi di array counting untuk nilai tersebut. 7. Array hasil sekarang berisi elemen-elemen yang telah diurutkan.
Untuk lebih jelasnya sudah saya buatkan video
B) Coding
public class CountingSort {
public static void main(String[] args){ int[] arr = {4, 2, 2, 8, 3, 3}; int[] sortedArr = countingSort(arr); System.out.print("Array yang sudah diurutkan: "); for (int num : sortedArr) { System.out.print(num + " "); }// batas akhir print
}// batas akhir main (1)
// Fungsi bantu untuk mencari nilai maksimum dalam array (2)
private static int findMax(int[] arr) { int max = arr[0]; for (int num : arr) { if (num > max) { max = num; } // batas akhir if }// batas akhir for return max; } // batas akhir findmax public static int[] countingSort(int[] arr) { // (3) // Mencari nilai maksimum dalam array int max = findMax(arr); // Menciptakan array hitung dengan ukuran (max + 1) int[] count = new int[max + 1]; //0,1,2,3,4,5,6,7,8
// Menghitung jumlah kemunculan setiap elemen dalam array
for (int num : arr) { count[num]++; } // akhir -3 //(4, 2, 2, 8, 3, 3) //(0,1,2,3,4,5,6,7,8) //(0,0,2,2,1.0,0,0,1)
// Menghasilkan array hasil yang sudah diurutkan (mesin utama)
// (2 dstnya int[] result = new int[arr.length]; int index = 0; for (int i = 0; i <= max; i++) { while (count[i] > 0) { result[index] = i; index++; count[i]--; }// akhir while }// akhir for return result; } // counting }
https://bit.ly/40yk6Fn https://youtu.be/toi6picqnFM?si=IZVbEkzDXgC5jPf4 Foto foto Ini adalah ruangan di sudut kantor yang tersunyi yang bisa saya gunakan untuk merekam video