/*
* 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)额外空间实现,利用二路归并递归实现。
leetcode_Sort a linked list using insertion sort.
最新推荐文章于 2021-12-07 09:13:28 发布
本文介绍了一种基于链表存储的插入排序算法实现方法,并通过一个Java示例代码展示了如何使用插入排序来对链表进行排序。此外,还讨论了如何在O(nlogn)的时间复杂度和O(1)的空间复杂度下实现链表排序。
摘要由CSDN通过智能技术生成