fork download
  1. // Merge sort in Java
  2.  
  3. class MergeSort {
  4. void merge(int arr[], int p, int q, int r) {
  5.  
  6. int n1 = q - p + 1;
  7. int n2 = r - q;
  8.  
  9. int L[] = new int[n1];
  10. int M[] = new int[n2];
  11.  
  12. for (int i = 0; i < n1; i++)
  13. L[i] = arr[p + i];
  14. for (int j = 0; j < n2; j++)
  15. M[j] = arr[q + 1 + j];
  16.  
  17. int i, j, k;
  18. i = 0;
  19. j = 0;
  20. k = p;
  21. while (i < n1 && j < n2) {
  22. if (L[i] <= M[j]) {
  23. arr[k] = L[i];
  24. i++;
  25. } else {
  26. arr[k] = M[j];
  27. j++;
  28. }
  29. k++;
  30. }
  31. while (i < n1) {
  32. arr[k] = L[i];
  33. i++;
  34. k++;
  35. }
  36.  
  37. while (j < n2) {
  38. arr[k] = M[j];
  39. j++;
  40. k++;
  41. }
  42. }
  43. void mergeSort(int arr[], int l, int r) {
  44. if (l < r) {
  45. int m = (l + r) / 2;
  46.  
  47. mergeSort(arr, l, m);
  48. mergeSort(arr, m + 1, r);
  49. merge(arr, l, m, r);
  50. }
  51. }
  52.  
  53. static void printArray(int arr[]) {
  54. int n = arr.length;
  55. for (int i = 0; i < n; ++i)
  56. System.out.print(arr[i] + " ");
  57. System.out.println();
  58. }
  59. public static void main(String args[]) {
  60. int arr[] = { 6, 5, 12, 10, 9, 1 };
  61.  
  62. MergeSort ob = new MergeSort();
  63. ob.mergeSort(arr, 0, arr.length - 1);
  64.  
  65. System.out.println("Sorted array:");
  66. printArray(arr);
  67. }
  68. }
Success #stdin #stdout 0.08s 34000KB
stdin
Standard input is empty
stdout
Sorted array:
1 5 6 9 10 12