• 对链表进行插入排序


    对链表元素插入排序

    示例 1:

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

    示例 2:

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

    解题思路:

    对于待排序的元素,在前部分有序链表中找到合适的位置插入即可。

    对结点2插入排序,只需将其插入到节点1与节点3之间即可。

    从起点开始遍历查找第一个大于节点2的节点,将节点2插入该节点的前面。

    定义两个指针p,q, q指向待排序节点的前一个节点,p用于查找第一个大于待排序节点的节点

    借用p,q指针可以将节点2插入节点3之前。

    实现代码:

        public static ListNode insertionSortList(ListNode head) {
    
            ListNode first = new ListNode(0);
            first.next = head;
    
            ListNode p = first;
            ListNode q = head;
            ListNode temp;
    
            while (q.next != null) {
    
                p = first;
                while (p!=q && p.next.val<q.next.val) p = p.next;
                if (p != q) {
                    temp = q.next;
                    q.next = temp.next;
                    temp.next = p.next;
                    p.next = temp;
                }
                else q = q.next;
            }
            return first.next;
        }
  • 相关阅读:
    Nginx PHP页面找不到总是返回404
    Bing每日一图
    Vue3
    PHP PDO相关
    IIS 搭建FTP
    vue根据环境不同设置不同的入口文件
    Vue生成打包报告
    Vue项目在执行build命令期间中移除所有consol.log
    Nprogress 的使用
    Vue报错处理
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9347939.html
Copyright © 2020-2023  润新知