I'm trying to implement a code to mergeSort a LinkedList without using a Node class. I was told to use getFirst() and addAll() but I don't know how so this is what I came up with :
public static LinkedList<Integer> mergeSort(LinkedList<Integer> list, int size) {
if (list.size() < 2) {
return list;
}
int sizeList_1 = size / 2;
int sizeList_2 = size - sizeList_1;
LinkedList<Integer> list_1 = new LinkedList<Integer>();
LinkedList<Integer> list_2 = new LinkedList<Integer>();
for (int i = 0; i < sizeList_1; i ) {
list_1.add(i,(list.get(i)));
}
for (int i = sizeList_1; i < size; i ) {
list_2.add(i - sizeList_1, (list.get(i)));
}
mergeSort(list_1, sizeList_1);
mergeSort(list_2, sizeList_2);
merge(list, list_1, list_2, sizeList_1, sizeList_2);
return list;
}
public static void merge(LinkedList<Integer> list, LinkedList<Integer> list_1, LinkedList<Integer> list_2, int sizeList_1, int sizeList_2) {
int i = 0, j = 0, k=0;
while(i < sizeList_1 && j < sizeList_2) {
if(list_1.get(i) < list_2.get(i)) {
list.set(k ,(list_1.get(i )));
}
else {
list.set(k ,(list_2.get(j )));
}
while (i < sizeList_1 ) {
list.add(k ,(list_1.get(i )));
}
while (j < sizeList_2 ) {
list.add(k ,(list_2.get(j )));
}
}
}
also I can't use a void for the mergeSort method because ti gives me an error so I have to return something. Thank's to anyone that will answer.
CodePudding user response:
