1. public static void sort(int array[]) {
    2. megerSort(array, 0, array.length - 1);
    3. }
    4. public static void megerSort(int data[], int left, int right) {
    5. if (left < right) {
    6. int mid = (left + right) / 2;
    7. megerSort(data, left, mid);
    8. megerSort(data, mid + 1, right);
    9. meger(data, left, mid, right);
    10. }
    11. }
    12. public static void meger(int data[], int left, int mid, int right) {
    13. int temp[] = new int[data.length];
    14. int point1 = left;
    15. int point2 = mid + 1;
    16. int loc = left;
    17. while (point1 <= mid && point2 <= right) {
    18. if (data[point1] < data[point2]) {
    19. temp[loc++] = data[point1++];
    20. } else {
    21. temp[loc++] = data[point2++];
    22. }
    23. }
    24. while (point1 <= mid) {
    25. temp[loc++] = data[point1++];
    26. }
    27. while (point2 <= right) {
    28. temp[loc++] = data[point2++];
    29. }
    30. for (int i = left; i <= right; i++) {
    31. data[i] = temp[i];
    32. }
    33. }