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. static int[] sort(int[] a) {
  11. if (a.length == 1) return a;
  12.  
  13. int middle = a.length / 2;
  14. int[] h1 = new int[middle];
  15. int[] h2 = new int[a.length - middle];
  16. for (int i = 0; i < middle; i++) h1[i] = a[i];
  17. for (int i = middle; i < a.length; i++) h2[i] = a[i];
  18. int[] r1 = sort(h1);
  19. int[] r2 = sort(h2);
  20. return merge(r1, r2);
  21. }
  22.  
  23. static int[] merge(int[] a1, int[] a2) {
  24. int[] r = new int[a1.length + a2.length];
  25. int p1 = 0, p2 = 0;
  26. for (int i = 0; i < r.length; i++) {
  27. if (p2 == a2.length || p1 < a1.length && a1[p1] <= a2[p2]) {
  28. r[i] = a1[p1];
  29. p1++;
  30. }
  31. else {
  32. r[i] = a2[p2];
  33. p2++;
  34. }
  35. }
  36. return r;
  37. }
  38.  
  39. public static void main (String[] args) throws java.lang.Exception
  40. {
  41. System.out.println(java.util.Arrays.toString(sort(new int[] {3, 1, 2})));
  42. }
  43. }
Runtime error #stdin #stdout #stderr 0.05s 711168KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
	at Ideone.sort(Main.java:17)
	at Ideone.main(Main.java:41)