zoukankan      html  css  js  c++  java
  • 链表排序之快速排序

    链表排序之插入快速算法:

    public static ListNode quickSortList(ListNode head){
            if (null == head || null == head.next){
                return head;
            }
            ListNode preHead = new ListNode(-1);
            quickSortList(preHead, head, null);
            return preHead.next;
        }
        private static void quickSortList(ListNode preHead, ListNode head, ListNode tail){
            if (head != tail && head.next != tail){
                ListNode mid = partition(preHead, head, tail);
                quickSortList(preHead, preHead.next, mid);
                quickSortList(mid, mid.next, tail);
            }
        }
        private static ListNode partition(ListNode lowPre, ListNode low, ListNode high){
            int key = low.val;
            ListNode head1 = new ListNode(-1);
            ListNode head2 = new ListNode(-1);
            ListNode l = head1;
            ListNode h = head2;
            for (ListNode node = low.next; node != high; node = node.next){
                if (node.val <= key){
                    l.next = node;
                    l = node;
                }else {
                    h.next = node;
                    h = node;
                }
            }
            h.next = high;
            l.next = low;
            low.next = head2.next;
            lowPre.next = head1.next;
            return low;
        }

    排序前:6 2 8 4 9 5 1 3 7

    排序后:1 2 3 4 5 6 7 8 9

  • 相关阅读:
    第八次作业
    第七次作业2
    jsp第十一次作业
    jsp第十次作业
    jsp第九次作业
    jsp第八次作业
    jsp第七次作业
    jsp第六次作业
    软件测试第二次作业
    jsp第五次作业
  • 原文地址:https://www.cnblogs.com/earthhouge/p/11754613.html
Copyright © 2011-2022 走看看