I want to sort a LinkedList in Java using a Mergesort algorithm.
I've researched in the internet for a solution but the algorithms I found sort either an Array or a self declared LinkedList. As I mentioned earlier I need an algorithm which sorts the standard java LinkedList (java.util.LinkedList).
In addition to my research I tried to implement one myself but I'm not capable of doing so. I was able to create the 'divide' part but I couldn't program the 'conquer' (merge in the sorted order) part.
This is my code:
private void mergeSort(LinkedList<Integer> list) {
if (list.size() < 2){
return;
}
int middleindex = list.size()/2;
LinkedList<Integer> [] listArr = split(list, middleindex);
LinkedList<Integer> leftList = listArr[0];
mergeSort(leftList);
LinkedList<Integer> rightList = listArr[1];
mergeSort(rightList);
sortedMerge(rightList, leftList, list);
}
private void sortedMerge(LinkedList<E> right, LinkedList<E> left, LinkedList<E> list){
//sort and merge
}
@SuppressWarnings("unchecked") private static <T> LinkedList<T>[] split(LinkedList<T> list, int index) {
LinkedList<T> left = new LinkedList<>();
for (int i = 0; i < index; i++) {
T t = list.removeFirst();
left.addLast(t);
}
return new LinkedList[] {
left, list
};
}
Can someone help me and create the 'sortedMerge()' method?