美文网首页LeetCode刷题笔记JAVA语言
148. Sort List(链表的快速排序)

148. Sort List(链表的快速排序)

作者: cixing | 来源:发表于2018-04-22 16:21 被阅读0次

具体原理

https://blog.csdn.net/wumuzi520/article/details/8078322
自己的java实现:

class Solution {
    public void swap(ListNode a, ListNode b) {
        int tmp =a.val;
        a.val = b.val;
        b.val = tmp;
    }
    public void quick_sort(ListNode head,ListNode tail) {
        if(head!=tail){
        int pivot = head.val;
        ListNode p1 = head;
        ListNode p2 = p1.next;
        while(p2!=null&&p2!=tail) {
            if(p2.val<pivot) {
                p1 = p1.next;
                swap(p1,p2);
            }
            p2 = p2.next;
        }
        swap(head,p1);
        quick_sort(head,p1);
        quick_sort(p1.next,tail);
    }
    }
    public ListNode sortList(ListNode head) {
        if(head==null||head.next==null)
            return head;
        quick_sort(head,null);
        return head;
    }
}

相关文章

网友评论

    本文标题:148. Sort List(链表的快速排序)

    本文链接:https://www.haomeiwen.com/subject/oodclftx.html