zoukankan      html  css  js  c++  java
  • 链表插入排序

    很简单,找到第一个逆序对,插入,注意头结点情况不同。然后如此反复即可。

    注意Java中对象按引用传递,引用本身是按值传递的。

    无附加头

    public ListNode insertionSortList(ListNode head) {
            if(head == null || head.next == null)
            {
                return head;
            }
            
            ListNode currNode = head;
            while(currNode.next != null)
            {
                if(currNode.val <= currNode.next.val)
                {
                    currNode = currNode.next;
                }else{
                    ListNode p = currNode.next;
                    currNode.next = currNode.next.next;
                    if(p.val < head.val)
                    {
                        p.next = head;
                        head = p;
                    }else{
                        ListNode tmp = head;
                        while(p.val >= tmp.next.val)
                        {
                            tmp = tmp.next;
                        }
                        p.next = tmp.next;
                        tmp.next = p;
                    }
                }
            }
            return head;
        }

    有附加头:

        public ListNode insertionSortList(ListNode head) {
             if(head == null || head.next == null)
             {
                 return head;
             }
             ListNode dummyNode = new ListNode(0);
             dummyNode.next = head;
             ListNode pNode = head;
             while (pNode.next != null) 
             {
                 if (pNode.val <= pNode.next.val) {
                    pNode = pNode.next;
                }else {
                    ListNode tmpNode = pNode.next;
                    pNode.next = pNode.next.next;
                    ListNode qNode = dummyNode;
                    while (tmpNode.val >= qNode.next.val ) {
                        qNode = qNode.next;
                    }
                    tmpNode.next = qNode.next;
                    qNode.next = tmpNode;
                }
             }
             return dummyNode.next;
            
        }

    可以看出有附加头的,把插入统一处理了,简化了操作。

  • 相关阅读:
    poj 1860 Currency Exchange(最短路径的应用)
    poj 2965 The Pilots Brothers' refrigerator
    zoj 1827 the game of 31 (有限制的博弈论)
    poj 3295 Tautology (构造法)
    poj 1753 Flip Game(枚举)
    poj 2109 (贪心)
    poj 1328(贪心)
    Qt 对单个控件美化
    Qt 4基础
    Bash Shell
  • 原文地址:https://www.cnblogs.com/zqiguoshang/p/5897991.html
Copyright © 2011-2022 走看看