leetcode_Sort a linked list using insertion sort.

本文介绍了一种基于链表存储的插入排序算法实现方法,并通过一个Java示例代码展示了如何使用插入排序来对链表进行排序。此外,还讨论了如何在O(nlogn)的时间复杂度和O(1)的空间复杂度下实现链表排序。
摘要由CSDN通过智能技术生成
	/*
	 * Sort a linked list using insertion sort.
	 * */
    public ListNode insertionSortList(ListNode head) 
    {
    	ListNode p = new ListNode(0);
    	ListNode phead = p;
    	while(head!=null)
    	{
    		p = phead; //reset p to the phead
    		while(p.next!=null)
    		{
    			if(p.next.val>head.val)
    			{
    				ListNode tmp = p.next;
    				p.next = head;
    				head = head.next; //here head next
    				p.next.next = tmp;
    				break;
    			}
    			p = p.next;
    		}
    		if(p.next == null)
    		{
    			p.next = head; 
    			head = head.next;//here head next
    			p.next.next = null;
    		}
    	}
    	return phead.next;
    }
    //插入排序
总结延伸:基于链式存储的插入排序,前面有一个题目要求O(nlogn)时间复杂度和O(1)额外空间实现,利用二路归并递归实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值