Course web page for Data Structures H343 Fall 2022
View the Project on GitHub IUDataStructuresCourse/course-web-page-fall-2022
In this lab you are asked to implement two versions of mergesort on linked lists,
one that produces a new list (sort) and another that works in-place (sort_in_place)
by changing the input list.
The sort function applied to the following list
[5] -> [2] -> [7] -> [1]
should produce the following new linked list and leave the original one unchanged.
[1] -> [2] -> [5] -> [7]
Place your sort and sort_in_place methods in a class named MergeSort
in a file named MergeSort.java.
Your sort function should have a Node parameter and Node return type,
that point to the first node in the input list and first node in the output list,
respectively. The Node class is provided to you in the file Node.java.
static Node sort(Node N) { ... }
The sort_in_place function applied to the following list
[6] -> [3] -> [8] -> [2]
should rearrange the nodes into the following order:
[2] -> [3] -> [6] -> [8]
This sort_in_place function should also take and return a Node that
point to the first node in the input and output lists, respectively.
static Node sort_in_place(Node N) { ... }
Section 7.6 of the textbook describes mergesort on an array. You’ll need to adapt the algorithm for linked lists. The steps of the algorithms are
You’ll need to implement two versions of the merge algorithm, one that returns a new linked list and the other that works in-place, rearranging the nodes.
static Node merge(Node A, Node B) { ... }
static Node merge_in_place(Node A, Node B) { ... }
For example, merge applied to the following two sorted lists
[1] -> [2] -> [5] -> [7]
[2] -> [3] -> [6] -> [8]
produces the following newly allocated list
[1] -> [2] -> [2] -> [3] -> [5] -> [6] -> [7] -> [8]
The idea of the merge algorithm is to scan through the two input sequences, choosing the smaller of the two current elements for the output sequence.
Create a file named MergeSortTest.java that includes three tests for
each of your merge and sort methods.
In a file named README.md answer the following questions.
merge function?sort function?merge_in_place function?sort_in_place function?Submit your MergeSort.java, MergeSortTest.java, and README.md files
to the autograder: