From f7f3e66917d266f75e1e918367000604e972f27e Mon Sep 17 00:00:00 2001 From: dvir019 <30556126+dvir019@users.noreply.github.com> Date: Wed, 16 Oct 2024 16:38:43 +0300 Subject: [PATCH 1/2] Create a merge sort algorithm in Java Create methods for sorting an array in Java using merge sort --- Java/MergeSort.java | 67 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Java/MergeSort.java diff --git a/Java/MergeSort.java b/Java/MergeSort.java new file mode 100644 index 0000000..4366840 --- /dev/null +++ b/Java/MergeSort.java @@ -0,0 +1,67 @@ +import java.util.Arrays; + +class MergeSort { + private static void merge(int[] arr, int left, int middle, int right) { + int n1 = middle - left + 1; + int n2 = right - middle; + + int[] leftArray = new int[n1]; + int[] rightArray = new int[n2]; + + System.arraycopy(arr, left, leftArray, 0, n1); + for (int j = 0; j < n2; j++) { + rightArray[j] = arr[middle + 1 + j]; + } + + int i = 0, j = 0; + + int k = left; + while (i < n1 && j < n2) { + if (leftArray[i] <= rightArray[j]) { + arr[k] = leftArray[i]; + i++; + } else { + arr[k] = rightArray[j]; + j++; + } + k++; + } + + while (i < n1) { + arr[k] = leftArray[i]; + i++; + k++; + } + + while (j < n2) { + arr[k] = rightArray[j]; + j++; + k++; + } + } + + private static void mergeSort(int[] arr, int left, int right) { + if (left < right) { + int middle = (left + right) / 2; + + mergeSort(arr, left, middle); + mergeSort(arr, middle + 1, right); + + merge(arr, left, middle, right); + } + } + + private static void mergeSort(int[] arr) { + mergeSort(arr, 0, arr.length - 1); + } + + public static void main(String[] args) { + int[] arr = { 1, 5, 0, -8, 2, 1, 0, -2}; + + System.out.println("Unsorted array: " + Arrays.toString(arr)); + + mergeSort(arr); + + System.out.println("Sorted array: " + Arrays.toString(arr)); + } +} \ No newline at end of file From 7a68d726d14b24b62bee2243c31762205bb42a44 Mon Sep 17 00:00:00 2001 From: dvir019 <30556126+dvir019@users.noreply.github.com> Date: Wed, 16 Oct 2024 16:40:48 +0300 Subject: [PATCH 2/2] Add my file to README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 077651f..840dde6 100644 --- a/README.md +++ b/README.md @@ -791,6 +791,7 @@ │   ├── PasswordGenerator.java │   ├── Quick_sort.java │   ├── Radix_sort.java +│   ├── MergeSort.java │   └── fibonacci.java ├── Kotlin Extensions │   └── Overview.txt