zoukankan      html  css  js  c++  java
  • 【力扣】147. 对链表进行插入排序

    对链表进行插入排序。


    插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。
    每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。

    插入排序算法:

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

    示例 1:

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/insertion-sort-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    时间复杂度:O(n^2)

    空间复杂度:O(1)

    public ListNode insertionSortList(ListNode head) {
            if(head == null){
                return head;
            }
            ListNode indexNode = new ListNode(0); // 索引节点 ,用于找到head节点
            indexNode.next = head;
            ListNode tailNode = head; // 设置尾节点
            ListNode currentNode = head.next;//设置当前节点
            while(currentNode != null){
    
                //比较当前节点跟尾部节点的大小
                //若当前节点比尾部节点大,则接着往下遍历节点就可以了
                if(currentNode.val >= tailNode.val){
                    tailNode = tailNode.next;
                } else {
                    //若是当前节点比尾部节点小,那么从head开始遍历,找到这个节点的位置
                    ListNode temp = indexNode;
                    while(currentNode.val >= temp.next.val){
                        temp = temp.next;
                    }
                    tailNode.next = currentNode.next; //设置尾节点为当前节点的下一个节点
                    currentNode.next = temp.next; //设置当前节点的下一个节点为 temp的next
                    temp.next = currentNode; 
                }
                currentNode = tailNode.next;
    
            }
            return indexNode.next;
        }
    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    C# 从服务器下载文件
    不能使用联机NuGet 程序包
    NPOI之Excel——合并单元格、设置样式、输入公式
    jquery hover事件中 fadeIn和fadeOut 效果不能及时停止
    UVA 10519 !! Really Strange !!
    UVA 10359 Tiling
    UVA 10940 Throwing cards away II
    UVA 10079 Pizze Cutting
    UVA 763 Fibinary Numbers
    UVA 10229 Modular Fibonacci
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/14014946.html
Copyright © 2011-2022 走看看