python归并排序链表,python链表归并排序
利用归并排序的思想,使用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链表归并排序相关推荐
- Python数据结构学习笔记——链表:无序链表和有序链表
目录 一.链表 二.无序链表 实现步骤分析 三.无序链表的Python实现代码 四.有序链表 实现步骤分析 五.有序链表的Python实现代码 结语 一.链表 链表中每一个元素都由为两部分构成:一是该 ...
- python链表和树实验报告_关于Python实现树结构和链表结构的一点想法
关于Python实现树结构和链表结构的一点想法 Python由于内置的数据结构具有很高的灵活性,所以可以用很多种方式来构建树.图.链表等结构 1. 树的Python实现 python自然可以使用cla ...
- 翻转链表python递归_Python实现链表反转的方法【迭代法与递归法】
导读 这篇文章主要介绍了Python实现链表反转的方法,结合实例形式分析了Python迭代法与递归法实现链表反转的相关操作技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python实现链表反转的 ...
- python中什么是链表_python中的数据结构-链表
一.什么是链表 链表是由一系列节点构成,每个节点由一个值域和指针域构成,值域中存储着用户数据,指针域中存储这指向下一个节点的指针.根据结构的不同,链表可以分为单向链表.单向循环链表.双向链表.双向循环 ...
- python创建一个有序链表_Python实现单向有序链表(Singly linked list)
概念介绍 上一博文已经介绍了Python实现单向无序链表的实现方式,这篇博文来介绍Python如何实现单向有序链表.有序和无序仅仅指节点所包含的数据成员的大小排列顺序,有序指各个节点按照节点数据成员的 ...
- 用python 判断一个单链表是否有环
文章目录 用python 判断一个单链表是否有环. 第二次做DAY20201130 [141. 环形链表](https://leetcode-cn.com/problems/linked-list-c ...
- python数据结构之单链表
今天终于把大学都没想明白的链表数据结构整明白了,也算小小的收获,挺好玩的.文后附链表操作示意图. 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. ...
- 链表的二路归并排序 Sort List
对于链表的排序问题,想找一种时间复杂度为O(nlogn),空间复杂度O(1)的算法.该问题源自于Leetcode,Sort a linked list in O(n log n) time using ...
- Python数据结构 四种链表的集合
python数据结构四个链表的集合 结点的创建 import os# 创建节点 class Node:def __init__(self, data):self.data = dataself.nex ...
- 剑指offer77:链表排序(归并排序)
题目: 给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 . 输入:head = [4,2,1,3] 输出:[1,2,3,4] 输入:head = [-1,5,3,4,0] 输出 ...
最新文章
- linux命令在哪里使用,在Linux不同场景中Linux命令的使用方法
- 【Docker】Docker操作常用命令
- ubuntu安装 rust nightly_Rust 嵌入式开发环境搭建指南 (一):让世界闪烁吧
- Linux学习之嵌入式Linux编程文件IO(C语言版)
- 【今日CV 计算机视觉论文速览 第145期】Fri, 19 Jul 2019
- java4android代码_Android逆向-java代码基础(4)
- ValueError: Duplicate plugins for name projector解决
- 【Unity面试】 Unity基础核心 | 面试真题 | 全面总结 | 建议收藏
- [杂记]注册电气工程师考试复习及考试杂谈
- 通信恩仇,5G江湖(转)
- 商业化游戏服务器引擎自定义框架设计思路
- SpringBoot集成Elasticsearch7.4 实战(一)
- Mysql优化之使用短索引
- 【C语言】C语言操作符的分类及应用【超详细讲解】
- (一)路径规划算法---Astar与C++可视化在RVIZ的二维栅格地图
- 女神相册密码忘记了,我只用Python写了20行代码就破解了!
- 页面的任何位置,按下键盘,获取按键的值
- 关于UML的个人见解——答周筠和霍炬两位老师
- 通过国家认定的在线监测仪器_在线监测_环境保护网
- 论文笔记:Deeply-Learned Part-Aligned Representations for Person Re-Identification
热门文章
- java计算机毕业设计高校智能排课系统源程序+mysql+系统+lw文档+远程调试
- QT 修改 程序图标及窗口图标
- php 怎么查表中毒额所有记录,查看“中毒”的源代码
- EDIT Control控件,对应的变量为 int类型,输入为非法字符时怎么判断
- 诚之和:TT语音母公司递表半年亏损近10亿、游戏社交隐患多
- 每日简报 7月18日简报新鲜事 每天一分钟 了解新鲜事
- Electron开发实战之记账软件15——崩溃报告
- 2.9 描边工具的使用 [Ps教程]
- 使用python时间戳计算程序运行时间
- 谁会成为中国互联网下一代英雄?