1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import java.util.Arrays;
public class MergeSort {
public static void mergeSort(int[] arr) { int n = arr.length;
if (n <= 1) { return; }
int mid = n / 2; int[] left = Arrays.copyOfRange(arr, 0, mid); int[] right = Arrays.copyOfRange(arr, mid, n);
mergeSort(left); mergeSort(right);
merge(arr, left, right); }
private static void merge(int[] arr, int[] left, int[] right) { int leftLength = left.length; int rightLength = right.length; int i = 0, j = 0, k = 0;
while (i < leftLength && j < rightLength) { if (left[i] <= right[j]) { arr[k] = left[i]; i++; } else { arr[k] = right[j]; j++; } k++; }
while (i < leftLength) { arr[k] = left[i]; i++; k++; }
while (j < rightLength) { arr[k] = right[j]; j++; k++; } }
public static void main(String[] args) { int[] arr = {12, 11, 13, 5, 6, 7}; System.out.println("Original array: " + Arrays.toString(arr));
mergeSort(arr);
System.out.println("Sorted array: " + Arrays.toString(arr)); } }
|