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
    人月神话读后感1
    自己跟自己聊天的软件2
    做一个自己跟自己聊天的软件
    安装Android开发工具
    阅读笔记6
    阅读笔记5
    第16周学习进度总结
    个人课程总结
    第15周学习进度总结
  • 原文地址:https://www.cnblogs.com/earthhouge/p/11754613.html
Copyright © 2011-2022 走看看