【题目描述】 用链表实现插入排序,从小到大排序。 【输入格式】 第一行一个数n表示数的个数 第二行n个数表示待排序的序列 【输出格式】 一行n个数表示排序的结果。 【样例输入】 3 3 2 1 【样例输出】 1 2 3
时间: 2024-01-17 10:06:02 浏览: 93
好的,你的问题是如何使用链表实现插入排序,从小到大排序。以下是一种实现方式:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def insertion_sort_list(head: ListNode) -> ListNode:
dummy = ListNode(0)
curr = head
while curr:
prev = dummy
next_node = prev.next
while next_node:
if curr.val < next_node.val:
break
prev = next_node
next_node = next_node.next
temp = curr.next
curr.next = next_node
prev.next = curr
curr = temp
return dummy.next
```
这里我们定义了一个链表节点类ListNode,其中val表示节点的值,next表示指向下一个节点的指针。insertion_sort_list函数接受一个链表头节点head,返回排好序的链表头节点。
我们首先定义一个dummy节点,它是一个哨兵节点,用于简化代码实现。然后遍历链表,对于每个节点curr,我们需要找到它在排好序的链表中应该插入的位置。我们从dummy节点开始遍历排好序的链表,找到第一个大于curr节点的节点next_node,然后将curr节点插入到它的前面。最后返回dummy.next即为排好序的链表头节点。
希望这个实现能够解答你的问题。
阅读全文