Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. public List<Integer> mergeSortedLists(List<Integer> left, List<Integer> right) {
  2. if (left.size() == 0 && right.size() == 0) {
  3. return new ArrayList<>();
  4. } else {
  5. List<Integer> total = new ArrayList<>();
  6. mergeSortedListsAdd(left, right, total, 0, right.size() - 1, false);
  7.  
  8. return total;
  9. }
  10. }
  11.  
  12. // THIS IS REALLY MESSY AND BASICALLY HARD CODED BUT I REALLY WANTED TO FINISH
  13.  
  14. public void mergeSortedListsAdd(List<Integer> left, List<Integer> right, List<Integer> total, int index, int index2,
  15. boolean ended) {
  16. if (total.size() < left.size() + right.size()) {
  17. // deals with cases if one of the lists is empty
  18. if (left.size() == 0 && index2 >= 0) {
  19. total.add(right.get(index2));
  20. mergeSortedListsAdd(left, right, total, index, --index2, false);
  21.  
  22. // adds right indexes to total if left at index is bigger than right at index
  23. } else if (right.size() == 0 && index < left.size()) {
  24. total.add(left.get(index));
  25. mergeSortedListsAdd(left, right, total, ++index, index2, false);
  26. } else if (index2 >= 0 && left.get(index) > right.get(index2) && right.size() != 0 && !ended) {
  27. total.add(right.get(index2));
  28. if (index2 - 1 > -1)
  29. mergeSortedListsAdd(left, right, total, index, --index2, false);
  30. else
  31. mergeSortedListsAdd(left, right, total, index, index2, true);
  32.  
  33. } else if (index < left.size() && left.get(index) < right.get(index2) && left.size() != 0 && !ended) {
  34. total.add(left.get(index));
  35. if (index + 1 < left.size())
  36. mergeSortedListsAdd(left, right, total, ++index, index2, false);
  37. else
  38. mergeSortedListsAdd(left, right, total, index, index2, true);
  39.  
  40. } else if (index2 == 0 && index < left.size() && ended) {
  41.  
  42. total.add(left.get(index));
  43. mergeSortedListsAdd(left, right, total, ++index, index2, true);
  44.  
  45. } else if (index == left.size() - 1 && index2 >= 0 && ended) {
  46. total.add(right.get(index2));
  47.  
  48. if (index2 - 1 == 0)
  49. total.add(right.get(0));
  50. else
  51. mergeSortedListsAdd(left, right, total, index, --index2, true);
  52.  
  53. }
  54.  
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement