LeetCode 147. 对链表进行插入排序
题目描述
思路分析
插入排序
插入排序是一种简单直观的排序算法,适用于链表的排序。我们可以通过维护一个已排序的链表部分,将未排序的节点逐个插入到已排序部分的正确位置。具体步骤如下:
- 创建一个虚拟头节点
dummy
,用于方便处理头节点的插入。- 遍历原链表,对于每个节点,找到其在已排序链表中的插入位置。
- 将节点插入到已排序链表中。
- 继续处理下一个节点,直到所有节点都被插入。
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func insertionSortList(head *ListNode) *ListNode {
dummy := &ListNode{}
cur := head
for cur != nil {
// 保存下一个节点
next := cur.Next
// 找到插入位置
pre := dummy
for pre.Next != nil && pre.Next.Val < cur.Val {
pre = pre.Next
}
// 插入节点
cur.Next = pre.Next
pre.Next = cur
// 处理下一个节点
cur = next
}
return dummy.Next
}
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用