zoukankan      html  css  js  c++  java
  • Leetcode147. Insertion Sort List对链表进行插入排序

    对链表进行插入排序。

    从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。

    每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。

    插入排序算法:

    1. 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
    2. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
    3. 重复直到所有输入数据插入完为止。

    示例 1:

    输入: 4->2->1->3 输出: 1->2->3->4

    示例 2:

    输入: -1->5->3->4->0 输出: -1->0->3->4->5

    class Solution {
    public:
        ListNode* insertionSortList(ListNode* head) 
        {
            if(head == NULL)
                return NULL;
            ListNode *node = head ->next;
            ListNode *newhead = new ListNode(0);
            newhead ->next = head;
            head ->next = NULL;
            while(node != NULL)
            {
                ListNode *last = newhead;
                ListNode *cur = newhead ->next;
                ListNode *nextNode = node ->next;
                bool isInsert = false;
                while(cur != NULL)
                {
                    if(node ->val > cur ->val)
                    {
                        last = cur;
                        cur = cur ->next;
                    }
                    else
                    {
                        isInsert = true;
                        last ->next = node;
                        node ->next = cur;
                        break;
                    }
                }
                if(!isInsert)
                {
                    last ->next = node;
                    node ->next = NULL;
                }
                node = nextNode;
                if(nextNode != NULL)
                    nextNode = nextNode ->next;
            }
            return newhead ->next;
        }
    };

  • 相关阅读:
    Es索引优化
    Echarts-JAVA
    黑客容易攻击的端口
    基于流数据挖掘的网络流量异常检测及分析研究
    大数据可视化分析-绿盟
    Cron
    spring mvc 使用及json 日期转换解决方案
    PIXLCLOUND
    Moloch
    MySQL JDBC的setFetchSize
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433828.html
Copyright © 2011-2022 走看看