|
发表于 2023-7-4 15:35:41
|
显示全部楼层
回帖奖励 +10 鱼币
以下是一个使用插入排序算法对链表进行排序的示例代码,并注释了关键步骤:
- python
- class ListNode:
- def __init__(self, val=0, next=None):
- self.val = val
- self.next = next
- def 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)即可。
希望这可以帮助到您!如果您有任何其他问题,请随时提问。 |
|