leetcode 147. Insertion Sort List

本文详细解析了基于链表的插入排序算法,通过设置虚拟头结点,实现链表中每个节点与已排序部分的比较和插入操作。算法时间复杂度为O(n^2),空间复杂度为O(1)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法分析:
这是一个基于链表的插入排序,同样地设置一个虚拟的头结点vmNode,遍历整个链表时,链表中的每个节点与以vmNode为头节点的链表进行比较,找到插入位置,找到后将该节点插入,最终返回vmNode.next。整个算法的时间复杂度为O(n2),空间复杂度为O(1)。
参考代码:

//leetcode   147. Insertion Sort List
    public ListNode insertionSortList(ListNode head) {
    	ListNode vmNode = new ListNode(0);
    	ListNode cur = head;
    	while(cur!=null){
    		ListNode next = cur.next;
        	ListNode p=vmNode.next;
    		ListNode pre = vmNode;
    		while(p!=null&&p.val<cur.val){
    			pre = p;
    			p = p.next;
    		}
    		pre.next = cur;
    		cur.next = p;
    		cur = next;
    	}
    	return vmNode.next;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值