千家信息网

java如何实现排序链表

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关java如何实现排序链表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进
千家信息网最后更新 2026年11月02日java如何实现排序链表

这篇文章将为大家详细讲解有关java如何实现排序链表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

示例 1:

输入: 4->2->1->3
输出: 1->2->3->4

示例 2:

输入: -1->5->3->4->0
输出: -1->0->3->4->5

答案:

 1public ListNode sortList(ListNode head) {
2 if (head == null || head.next == null)
3 return head;
4 // 把链表分为两部分
5 ListNode prev = null, slow = head, fast = head;
6 while (fast != null && fast.next != null) {
7 prev = slow;
8 slow = slow.next;
9 fast = fast.next.next;
10 }
11 prev.next = null;
12 // 分别排序这两部分
13 ListNode l1 = sortList(head);
14 ListNode l2 = sortList(slow);
15 // 然后再合并
16 return merge(l1, l2);
17}
18
19ListNode merge(ListNode l1, ListNode l2) {
20 ListNode l = new ListNode(0), p = l;
21 while (l1 != null && l2 != null) {
22 if (l1.val < l2.val) {
23 p.next = l1;
24 l1 = l1.next;
25 } else {
26 p.next = l2;
27 l2 = l2.next;
28 }
29 p = p.next;
30 }
31 if (l1 != null)
32 p.next = l1;
33 if (l2 != null)
34 p.next = l2;
35 return l.next;
36}

关于"java如何实现排序链表"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

排序 篇文章 复杂 复杂度 更多 示例 部分 输入 输出 不错 实用 内容 常数 文章 时间 知识 空间 答案 参考 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州百单互联网科技有限公司 科技创新与互联网经济 厦门中拓互联网络科技有限公司 青岛互联网科技公司 互联网科技公司怎么样 贷财互联网科技 银优互联网科技有限公司 西安互联网科技公司 哈尔滨秒房互联网科技有限公司 互联网 科技馆 福州新华互联网科技学校 知乎 常德市电业局互联网科技部 互联网和黑科技的看法 晓花互联网科技有限公司网址 恒生互联网科技业指数调整周期 陕西云淼互联网科技公司 互联网科技企业商标注意事项 科技互联网专业工作会议发言稿 现代互联网科技公司 青岛互联网科技园 中关村互联网科技集团 互联网属科技 互联网 科技创新 厦门比较好的科技互联网公司 朱啸虎曾投资哪些互联网科技企业 国大互联网教育科技有限公司薪资 互联网硬科技公司 10位科技互联网大佬 互联网企业和网络科技有限公司 山东亿川互联网科技有限责任公司
0