Java how to sort a Linked List?

后端 未结 9 2006
耶瑟儿~
耶瑟儿~ 2020-12-03 03:00

I am needing to sort a linked list alphabetically. I have a Linked List full of passengers names and need the passengers name to be sorted alphabetically. How would one do t

9条回答
  •  醉梦人生
    2020-12-03 03:44

    Node mergeSort(Node head) {
        if(head == null || head.next == null) {
            return head;
        }
    
        Node middle = middleElement(head);
        Node nextofMiddle = middle.next;
        middle.next = null;
    
        Node left = mergeSort(head);
        Node right = mergeSort(nextofMiddle);
    
        Node sortdList = merge(left, right);
    
        return sortdList;
    }
    
    Node merge(Node left, Node right) {
        if(left == null) {
            return right;
        }
    
        if(right == null) {
            return left;
        }
        Node temp = null;
        if(left.data < right.data) {
            temp = left;
            temp.next = merge(left.next, right);
        } else {
            temp = right;
            temp.next = merge(left, right.next);
        }
    
        return temp;
    }
    
    Node middleElement(Node head) {
        Node slow = head;
        Node fast = head;
        while (fast != null && fast.next != null && fast.next.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        return slow;
    }
    

提交回复
热议问题