Insertion Sort List
Sort a linked list using insertion sort.
链表的插入排序实现原理很简单, 初始时,sorted list是空,把一个元素一个元素的从原链表中取出来,然后插入到新链表中,在每一次插入过程中,都是找到最合适位置进行插入。时间复杂度为O(n2),是一种效率并不是很高的算法,但是空间复杂度为O(1),以高时间复杂度换取了低空间复杂度。代码如下:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def insertionSortList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
dummy = ListNode(0)
while head:
temp = dummy
nxt = head.next
while temp.next and temp.next.val < head.val:
temp = temp.next
head.next = temp.next
temp.next = head
head = nxt
return dummy.next
Last updated
Was this helpful?