Algoritma Merge Sort!
Apakah kalian tahu apa itu Sorting? Sorting merupakan metode untuk mengurutkan nilai, nah salah satu metodenya yaitu Merge Sort di part.2 ini kita akan belajar mengenai metode Merge Sort.
Merge Sort bekerja dengan menggabungkan dan mengurutkan suatu nilai. Data dalam bentuk Array di bagi menjadi 2 bagian dan menjadi 1. Untuk itu kalian perlu banget memahami cara kerjanya dimulai dari konsep yang menggunakan Binary Tree/ Pohon Binner.
Disini lansung saja aku praktekan melalui Coding! Misal ada data dari yang terkecil hingga terbesar dan ingin dilakukan sebuah pengurutan.
Code Program/ Java Script:
public class merge_sort {
public static void mergeSort(int[] arr, int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
public static void merge(int[] arr, int left, int mid, int right) {
int n1 = mid - left + 1;
int n2 = right - mid;
int[] leftArr = new int[n1];
int[] rightArr = new int[n2];
for (int i = 0; i < n1; ++i)
leftArr[i] = arr[left + i];
for (int j = 0; j < n2; ++j)
rightArr[j] = arr[mid + 1 + j];
int i = 0, j = 0;
int k = left;
while (i < n1 && j < n2) {
if (leftArr[i] <= rightArr[j]) {
arr[k] = leftArr[i];
i++;
} else {
arr[k] = rightArr[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = leftArr[i];
i++;
k++;
}
while (j < n2) {
arr[k] = rightArr[j];
j++;
k++;
}
}
public static void main(String[] args) {
int a1 = 21;
int a2 = 22;
int a3 = 23;
int a4 = 24;
int a5 = 25;
int a6 = 26;
int[] arr = {a1, a2, a3, a4, a5, a6}; // Ganti a1 sampai a6 dengan nilai yang diinginkan
int n = arr.length;
System.out.println("Array sebelum diurutkan:");
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
mergeSort(arr, 0, n - 1);
System.out.println("Array setelah diurutkan:");
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}
}
run:
Array sebelum diurutkan:
21 22 23 24 25 26
Array setelah diurutkan:
21 22 23 24 25 26
BUILD SUCCESSFUL (total time: 0 seconds)