利用归并排序的思想,使用o(nlogn)时间复杂度,排序链表

# -*- coding: utf-8 -*-'

class ListNode(object):

def __init__(self, x):

self.val = x

self.next = None

class Solution(object):

def sortList(self, head):

if not head or not head.next:

return head

prev, slow, fast = None, head, head

while fast and fast.next:

prev, slow, fast = slow, slow.next, fast.next

prev.next = None # 将链表切断,分为head和slow两条子链

l1 = self.sortList(head)

l2 = self.sortList(slow)

return self.merge(l1, l2)

def merge(self, l1, l2):

dummy = l = ListNode(None)

while l1 and l2:

if l1.val < l2.val:

l.next, l, l1 = l1, l1, l1.next

else:

l.next, l, l2 = l2, l2, l2.next

l.next = l1 or l2

return dummy.next

if __name__ == "__main__":

s = Solution()

l = head = ListNode(None)

for val in [0, 3, 2, 8, 1]:

l.next = ListNode(val)

l = l.next

li = s.sortList(head.next)

while li:

print (li.val)

li = li.next

output:

0

1

2

3

8

python归并排序链表,python链表归并排序相关推荐

  1. Python数据结构学习笔记——链表:无序链表和有序链表

    目录 一.链表 二.无序链表 实现步骤分析 三.无序链表的Python实现代码 四.有序链表 实现步骤分析 五.有序链表的Python实现代码 结语 一.链表 链表中每一个元素都由为两部分构成:一是该 ...

  2. python链表和树实验报告_关于Python实现树结构和链表结构的一点想法

    关于Python实现树结构和链表结构的一点想法 Python由于内置的数据结构具有很高的灵活性,所以可以用很多种方式来构建树.图.链表等结构 1. 树的Python实现 python自然可以使用cla ...

  3. 翻转链表python递归_Python实现链表反转的方法【迭代法与递归法】

    导读 这篇文章主要介绍了Python实现链表反转的方法,结合实例形式分析了Python迭代法与递归法实现链表反转的相关操作技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python实现链表反转的 ...

  4. python中什么是链表_python中的数据结构-链表

    一.什么是链表 链表是由一系列节点构成,每个节点由一个值域和指针域构成,值域中存储着用户数据,指针域中存储这指向下一个节点的指针.根据结构的不同,链表可以分为单向链表.单向循环链表.双向链表.双向循环 ...

  5. python创建一个有序链表_Python实现单向有序链表(Singly linked list)

    概念介绍 上一博文已经介绍了Python实现单向无序链表的实现方式,这篇博文来介绍Python如何实现单向有序链表.有序和无序仅仅指节点所包含的数据成员的大小排列顺序,有序指各个节点按照节点数据成员的 ...

  6. 用python 判断一个单链表是否有环

    文章目录 用python 判断一个单链表是否有环. 第二次做DAY20201130 [141. 环形链表](https://leetcode-cn.com/problems/linked-list-c ...

  7. python数据结构之单链表

    今天终于把大学都没想明白的链表数据结构整明白了,也算小小的收获,挺好玩的.文后附链表操作示意图. 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. ...

  8. 链表的二路归并排序 Sort List

    对于链表的排序问题,想找一种时间复杂度为O(nlogn),空间复杂度O(1)的算法.该问题源自于Leetcode,Sort a linked list in O(n log n) time using ...

  9. Python数据结构 四种链表的集合

    python数据结构四个链表的集合 结点的创建 import os# 创建节点 class Node:def __init__(self, data):self.data = dataself.nex ...

  10. 剑指offer77:链表排序(归并排序)

    题目: 给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 . 输入:head = [4,2,1,3] 输出:[1,2,3,4] 输入:head = [-1,5,3,4,0] 输出 ...

最新文章

  1. linux命令在哪里使用,在Linux不同场景中Linux命令的使用方法
  2. 【Docker】Docker操作常用命令
  3. ubuntu安装 rust nightly_Rust 嵌入式开发环境搭建指南 (一):让世界闪烁吧
  4. Linux学习之嵌入式Linux编程文件IO(C语言版)
  5. 【今日CV 计算机视觉论文速览 第145期】Fri, 19 Jul 2019
  6. java4android代码_Android逆向-java代码基础(4)
  7. ValueError: Duplicate plugins for name projector解决
  8. 【Unity面试】 Unity基础核心 | 面试真题 | 全面总结 | 建议收藏
  9. [杂记]注册电气工程师考试复习及考试杂谈
  10. 通信恩仇,5G江湖(转)
  11. 商业化游戏服务器引擎自定义框架设计思路
  12. SpringBoot集成Elasticsearch7.4 实战(一)
  13. Mysql优化之使用短索引
  14. 【C语言】C语言操作符的分类及应用【超详细讲解】
  15. (一)路径规划算法---Astar与C++可视化在RVIZ的二维栅格地图
  16. 女神相册密码忘记了,我只用Python写了20行代码就破解了!
  17. 页面的任何位置,按下键盘,获取按键的值
  18. 关于UML的个人见解——答周筠和霍炬两位老师
  19. 通过国家认定的在线监测仪器_在线监测_环境保护网
  20. 论文笔记:Deeply-Learned Part-Aligned Representations for Person Re-Identification

热门文章

  1. java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试
  2. QT 修改 程序图标及窗口图标
  3. php 怎么查表中毒额所有记录,查看“中毒”的源代码
  4. EDIT Control控件,对应的变量为 int类型,输入为非法字符时怎么判断
  5. 诚之和:TT语音母公司递表半年亏损近10亿、游戏社交隐患多
  6. 每日简报 7月18日简报新鲜事 每天一分钟 了解新鲜事
  7. Electron开发实战之记账软件15——崩溃报告
  8. 2.9 描边工具的使用 [Ps教程]
  9. 使用python时间戳计算程序运行时间
  10. 谁会成为中国互联网下一代英雄?