以下是一个使用插入排序算法对链表进行排序的示例代码,并注释了关键步骤:pythonclass ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextdef insertionSortList(head): # 创建一个新链表,用于保存已排序部分的节点 dummy = ListNode(0) curr = head # 遍历原链表中的每个节点 while curr: prev = dummy # 找到插入位置的前一个节点 while prev.next and prev.next.val < curr.val: prev = prev.next # 将当前节点插入到已排序部分 temp = curr.next curr.next = prev.next prev.next = curr # 继续遍历下一个待排序节点 curr = temp return dummy.next
在上述代码中,我们首先创建了一个虚拟头节点(dummy)。然后,我们使用两个指针和来遍历原链表和已排序链表。
在每次迭代中,我们将节点从原链表中取出,并找到其在已排序链表中应该插入的位置。通过比较当前节点的值(curr.val)和已排序部分的节点值(prev.next.val),我们可以确定插入位置的前一个节点(prev)。接下来,我们修改指针,将当前节点插入到已排序部分,然后继续遍历下一个待排序节点。
最后,我们返回已排序链表(dummy.next)即可。
希望这可以帮助到您!如果您有任何其他问题,请随时提问。 |