Anda di halaman 1dari 7

Nama : Y Wahyu Eko Santoso , NIM : 044780608

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
}

Link algoritme Counting Sort


https://bit.ly/46aLw5m
https://youtu.be/CC1BsvUK0yk?si=27qYRJ-7sDkleBtp

Link Coding Couting Sort


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

Anda mungkin juga menyukai