Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public List<Integer> mergeSortedLists(List<Integer> left, List<Integer> right) {
- if (left.size() == 0 && right.size() == 0) {
- return new ArrayList<>();
- } else {
- List<Integer> total = new ArrayList<>();
- mergeSortedListsAdd(left, right, total, 0, right.size() - 1, false);
- return total;
- }
- }
- // THIS IS REALLY MESSY AND BASICALLY HARD CODED BUT I REALLY WANTED TO FINISH
- public void mergeSortedListsAdd(List<Integer> left, List<Integer> right, List<Integer> total, int index, int index2,
- boolean ended) {
- if (total.size() < left.size() + right.size()) {
- // deals with cases if one of the lists is empty
- if (left.size() == 0 && index2 >= 0) {
- total.add(right.get(index2));
- mergeSortedListsAdd(left, right, total, index, --index2, false);
- // adds right indexes to total if left at index is bigger than right at index
- } else if (right.size() == 0 && index < left.size()) {
- total.add(left.get(index));
- mergeSortedListsAdd(left, right, total, ++index, index2, false);
- } else if (index2 >= 0 && left.get(index) > right.get(index2) && right.size() != 0 && !ended) {
- total.add(right.get(index2));
- if (index2 - 1 > -1)
- mergeSortedListsAdd(left, right, total, index, --index2, false);
- else
- mergeSortedListsAdd(left, right, total, index, index2, true);
- } else if (index < left.size() && left.get(index) < right.get(index2) && left.size() != 0 && !ended) {
- total.add(left.get(index));
- if (index + 1 < left.size())
- mergeSortedListsAdd(left, right, total, ++index, index2, false);
- else
- mergeSortedListsAdd(left, right, total, index, index2, true);
- } else if (index2 == 0 && index < left.size() && ended) {
- total.add(left.get(index));
- mergeSortedListsAdd(left, right, total, ++index, index2, true);
- } else if (index == left.size() - 1 && index2 >= 0 && ended) {
- total.add(right.get(index2));
- if (index2 - 1 == 0)
- total.add(right.get(0));
- else
- mergeSortedListsAdd(left, right, total, index, --index2, true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement