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

具体原理

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容