/** * @author lautturi.com * Java example: merge sort algorithm in java */ import java.util.*; public class Lautturi { static void merge(int[] arr, int[] left_half, int[] right_half, int left_len, int right_len) { int i = 0, j = 0, k = 0; while (i < left_len && j < right_len) { if (left_half[i] < right_half[j]) { arr[k++] = left_half[i++]; } else { arr[k++] = right_half[j++]; } } while (i < left_len) { arr[k++] = left_half[i++]; } while (j < right_len) { arr[k++] = right_half[j++]; } } public static void mergeSort(int[] a, int n) { if (n < 2) { return; } int mid = n / 2; int[] l = new int[mid]; int[] r = new int[n - mid]; for (int i = 0; i < mid; i++) { l[i] = a[i]; } for (int i = mid; i < n; i++) { r[i - mid] = a[i]; } mergeSort(l, mid); mergeSort(r, n - mid); merge(a, l, r, mid, n - mid); } public static void main(String[] args) { int[] numbers = { 11, 4, 2, 7, 55, 16, 12, 8, 13, 38 }; System.out.println(Arrays.toString(numbers)); mergeSort(numbers, numbers.length); // sorting an array using mergeSort algorithm System.out.println(Arrays.toString(numbers)); } }Source:www.lautturi.com
output:
[11, 4, 2, 7, 55, 16, 12, 8, 13, 38] [2, 4, 7, 8, 11, 12, 13, 16, 38, 55]