python 链表的归并排序(附数组的归并排序作为对照)
来源:互联网 发布:dbc2000怪物数据库 编辑:程序博客网 时间:2024/05/20 07:59
1. 链表的归并排序:
class Solution(object): def merge(self, left, right): head = tail = ListNode(-1) while left and right: if left.val<right.val: tail.next = left left = left.next tail = tail.next else: tail.next = right right = right.next tail = tail.next tail.next = left if left else right return head.next def sortList(self, head): if not head or not head.next: return head slow = head fast = head while fast and fast.next: #此处使用快慢指针的方法找到链表的中点 p = slow #p 在这里作为截断点 slow = slow.next fast = fast.next.next left = head right = p.next p.next = None left = self.sortList(left) right = self.sortList(right) return self.merge(left,right)
class Soluton1(object): def merge(self,left,right): head = [] while left and right: if left[0]<right[0]: head.append(left.pop(0)) else: head.append(right.pop(0)) if left: for i in left: head.append(i) else: for i in right: head.append(i) return head def sortArr(self,head): if len(head)<=1: return head mid = len(head)/2 left = head[:mid] right = head[mid:] left = self.sortArr(left) right = self.sortArr(right) return self.merge(left,right)
0 0
- python 链表的归并排序(附数组的归并排序作为对照)
- 数组的归并排序
- 数组的归并排序
- 数组的归并排序
- 数组及链表的归并排序(C++实现)
- 链表的归并排序
- 链表的归并排序
- 链表的归并排序
- 链表的归并排序
- 链表的归并排序
- 链表的归并排序
- 链表的归并排序
- 链表的归并排序
- python 写的归并排序
- 归并排序的Python实现
- 归并排序的Python实现
- 归并排序(数组)
- 归并排序--数组和链表的实现
- super在对象的内部使用,代表父类对象
- 铁路修复计划(裸Kruskal+二分)
- USB无线网卡配置ICS失败,你可以连接到SoftAP,但可能无法使用internet服务
- JavaScrip 时间格式化 ----转载
- 中介者模式
- python 链表的归并排序(附数组的归并排序作为对照)
- SeekBar增加可触摸区域
- Ruby-基础语法
- Josiah的小园子 Git详细教程---多人协作开发
- Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
- Lambda表达式与匿名内部类主要存在如下区别与相同点
- Leetcode 576 Out of Boundary Paths
- 【Unity&VS2015】VS2015的一个莫名其妙的问题
- 【Android】eclipse中使用RecyclerView