diff --git a/Merge Sort/Main.java b/Merge Sort/Main.java new file mode 100644 index 0000000..27b8f65 --- /dev/null +++ b/Merge Sort/Main.java @@ -0,0 +1,40 @@ +public class Main { + + public static void main(String[] args) { + int[] intArray = { 52, 63, -5, 89, -12 }; + + mergeSort(intArray, 0, intArray.length); + + for (int i = 0; i < intArray.length; i++) { + System.out.println(intArray[i]); + } + } + public static void mergeSort(int[] input, int start, int end) { + + if (end - start < 2) { + return; + } + int mid = (start + end) / 2; + mergeSort(input, start, mid); + mergeSort(input, mid, end); + merge(input, start, mid, end); + } + + public static void merge(int[] input, int start, int mid, int end) { + + if (input[mid - 1] <= input[mid]) { + return; + } + + int i = start; + int j = mid; + int tempIndex = 0; + + int[] temp = new int[end - start]; + while (i < mid && j < end) { + temp[tempIndex++] = input[i] <= input[j] ? input[i++] : input[j++]; + } + System.arraycopy(input, i, input, start + tempIndex, mid - i); + System.arraycopy(temp, 0, input, start, tempIndex); + } +}