Home > Net >  MergeSort using LinkedList without Nodes
MergeSort using LinkedList without Nodes

Time:02-10

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:

  •  Tags:  
  • Related