147. Insertion Sort List
Sort a linked list using insertion sort.
public class Solution {
public ListNode insertionSortList(ListNode head) {
ListNode root = new ListNode(0); // 头结点
root.next = head;
ListNode p = head;
ListNode q;
ListNode r;
//例如6->4->3->7->1->2
while (p != null && p.next != null) {
if (p.val <= p.next.val) {//如果此时p等于3,3<7,符合升序,p就指向7
p = p.next;
}else { //例如6大于4,则把4和6互换,另q等于4,所以6就指向了3(q.next)
q = p.next;
p.next = q.next;
r = root;
while (r.next.val <= q.val) { //此时r.next是6,6大于4,不执行循环
r = r.next;//最后进行到0->1->3->4->6->7->2,p等于7,q等于2,则7指向null(q.next),此时1小于2(r.next.val < q.val),所以另r等于1,再往下走,则让2->3, 1->2
}
q.next = r.next; //使得4指向6
r.next = q; //root指向4,完成4->6->3
}
}
return root.next;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix