fork download
  1. import java.util.ArrayList;
  2. import java.util.Random;
  3.  
  4. class MergeSort {
  5. public static void main(String[] args) {
  6. Random r = new Random();
  7. ArrayList<Integer> numbers = new ArrayList<Integer>();
  8. for (int i = 1; i <= 15; i++) {
  9. numbers.add(r.nextInt(100));
  10. }
  11. numbers = mergeSort(numbers);
  12. System.out.println(numbers);
  13. }
  14.  
  15. public static ArrayList<Integer> mergeSort(ArrayList<Integer> m) {
  16. if (m.size() <= 1) {
  17. return m;
  18. }
  19. ArrayList<Integer> left = new ArrayList<Integer>();
  20. ArrayList<Integer> right = new ArrayList<Integer>();
  21. for (int i = 0; i < m.size(); i++) {
  22. if (i < (m.size()) / 2)
  23. left.add(m.get(i));
  24. else {
  25. right.add(m.get(i));
  26. }
  27. }
  28. left = mergeSort(left);
  29. right = mergeSort(right);
  30. return merge(left, right);
  31. }
  32.  
  33. private static ArrayList<Integer> merge(ArrayList<Integer> l, ArrayList<Integer> r) {
  34. ArrayList<Integer> result = new ArrayList<Integer>();
  35. while (l.size() > 0 && r.size() > 0) {
  36. if (l.get(0) <= r.get(0)) {
  37. result.add(l.get(0));
  38. l.remove(0);
  39. } else {
  40. result.add(r.get(0));
  41. r.remove(0);
  42. }
  43. }
  44. while (l.size() > 0) {
  45. result.add(l.get(0));
  46. l.remove(0);
  47. }
  48. while (r.size() > 0) {
  49. result.add(r.get(0));
  50. r.remove(0);
  51. }
  52. return result;
  53. }
  54. }
Success #stdin #stdout 0.06s 32560KB
stdin
Standard input is empty
stdout
[3, 13, 20, 22, 40, 45, 51, 59, 63, 64, 72, 76, 85, 91, 98]