fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static int sort_list[] = {5, 9, 7, 8, 3, 4, 5, 6, 1, 0};
  11.  
  12.  
  13.  
  14. public static int[] mergeSort(int[] iv_sort_list) {
  15. for (int i = 0; i < iv_sort_list.length; i++) {
  16. System.out.print("Divide: " + iv_sort_list[i] + " ");
  17. }
  18.  
  19. if(iv_sort_list.length == 1){
  20. int[] sorted_list = new int[1];
  21. sorted_list[0] = iv_sort_list[0];
  22. System.out.println("Return " + sorted_list[0]);
  23. return sorted_list;
  24. }
  25.  
  26. int[] left = new int[iv_sort_list.length/2];
  27. int[] right = new int[iv_sort_list.length - left.length];
  28.  
  29. if (iv_sort_list.length > 1) {
  30. left = mergeSort(Arrays.copyOfRange(iv_sort_list, 0, iv_sort_list.length / 2));
  31. right = mergeSort(Arrays.copyOfRange(iv_sort_list, iv_sort_list.length / 2, iv_sort_list.length));
  32.  
  33. }
  34. int i = 0, j = 0, k = 0;
  35. int[] sorted_list = new int[iv_sort_list.length];
  36. while (k < iv_sort_list.length) {
  37. if(i < left.length && j < right.length){
  38. if(left[i] < right[j]) sorted_list[k++] = left[i++];
  39. else sorted_list[k++] = right[j++];
  40. }
  41. else if(i < left.length){
  42. sorted_list[k++] = left[i++];
  43. }
  44. else if(j < right.length){
  45. sorted_list[k++] = right[j++];
  46. }
  47. }
  48. System.out.print("Return");
  49. for(int x=0; x<sorted_list.length; x++){
  50. System.out.print(" " + sorted_list[x] + ", ");
  51. }
  52. System.out.println();
  53. return sorted_list;
  54. }
  55.  
  56. public static void main (String[] args) throws java.lang.Exception
  57. {
  58. int[] lv_sorted_list = mergeSort(sort_list);
  59. for (int i = 0; i < lv_sorted_list.length; i++) {
  60. System.out.print(" " + lv_sorted_list[i] + ", ");
  61. }
  62. }
  63. }
Success #stdin #stdout 0.1s 320576KB
stdin
Standard input is empty
stdout
Divide: 5 Divide: 9 Divide: 7 Divide: 8 Divide: 3 Divide: 4 Divide: 5 Divide: 6 Divide: 1 Divide: 0 Divide: 5 Divide: 9 Divide: 7 Divide: 8 Divide: 3 Divide: 5 Divide: 9 Divide: 5 Return 5
Divide: 9 Return 9
Return 5,  9, 
Divide: 7 Divide: 8 Divide: 3 Divide: 7 Return 7
Divide: 8 Divide: 3 Divide: 8 Return 8
Divide: 3 Return 3
Return 3,  8, 
Return 3,  7,  8, 
Return 3,  5,  7,  8,  9, 
Divide: 4 Divide: 5 Divide: 6 Divide: 1 Divide: 0 Divide: 4 Divide: 5 Divide: 4 Return 4
Divide: 5 Return 5
Return 4,  5, 
Divide: 6 Divide: 1 Divide: 0 Divide: 6 Return 6
Divide: 1 Divide: 0 Divide: 1 Return 1
Divide: 0 Return 0
Return 0,  1, 
Return 0,  1,  6, 
Return 0,  1,  4,  5,  6, 
Return 0,  1,  3,  4,  5,  5,  6,  7,  8,  9, 
 0,  1,  3,  4,  5,  5,  6,  7,  8,  9,