Be the first user to complete this post
|
Add to List |
Merge Sort in a Linked list
Objective: Given a Linked List, Sort it using merge sort.
Example:
->9->3->4->2->5->1 Sorted List: ->1->2->3->4->5->9
Approach:
Reference : Merge Sort in array
- As it Merge sort, we apply the same logic , Divide and Conquer.
- Find the length of the link list, say it is L.
- mid will be L/2.
- Now we need to divide the List into two equal parts.
- Take pointer(oldHead) and move it by L/2. Now it is pointing at the middle of the list.
- Make new pointer, newHead = oldHead.next.
- Now oldHead.next = null.
- Now do oldHead = head;
- Now at this point, list is divided into two parts, with old Head and newHead is pointing at the start of the linked list.
- Now recursively solve these two parts and merge them into single sorted list.
- Click here to see "How to merge two sorted Linked Lists".
Code:
Output:
->9->3->4->2->5->1 Sorted List: ->1->2->3->4->5->9
Also Read: