八大排序算法的python实现(六)归并排序
代码:
#coding:utf-8
#author:徐卜灵
def merge(left,right):
i,j = 0,0
result = []
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result def Merge_sort(L):
if len(L) <= 1:
return L
middle = len(L)/2
left = Merge_sort(L[:middle])
right = Merge_sort(L[middle:])
return merge(left,right) #参考网址http://python.jobbole.com/82270/
# def merge(left, right):
# i, j = 0, 0
# result = []
# while i < len(left) and j < len(right):
# if left[i] <= right[j]:
# result.append(left[i])
# i += 1
# else:
# result.append(right[j])
# j += 1
# result += left[i:]
# result += right[j:]
# return result
#
# def Merge_sort(lists):
# # 归并排序
# if len(lists) <= 1:
# return lists
# num = len(lists) / 2
# left = Merge_sort(lists[:num])
# right = Merge_sort(lists[num:])
# return merge(left, right)
L = [49,38,65,97,76,13,67,47]
print Merge_sort(L)
二路归并,没有什么难以理解的,要注意递归的写法。还有返回值的问题。
时间复杂度:O(nlogn)
空间复杂读:O(nlogn)
跟堆排序、快速排序一样。
但它是稳定排序算法
八大排序算法的python实现(六)归并排序的更多相关文章
- 八大排序算法的 Python 实现
转载: 八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个 ...
- python基础===八大排序算法的 Python 实现
本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...
- 八大排序算法---基于python
本文节选自:http://python.jobbole.com/82270/ 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 ...
- 八大排序算法的python实现(三)冒泡排序
代码: #coding:utf-8 #author:徐卜灵 #交换排序.冒泡排序 L = [1, 3, 2, 32, 5, 4] def Bubble_sort(L): for i in range( ...
- 八大排序算法(Python)
一.插入排序 介绍 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据. 算法适用于少量数据的排序,时间复杂度为O(n^2). 插入 ...
- 写代码?程序猿?你不能不懂的八大排序算法的Python实现
信息获取后通常需要进行处理,处理后的信息其目的是便于人们的应用.信息处理方法有多种,通常由数据的排序,查找,插入,删除等操作.本章介绍几种简单的数据排序算法和高效的排序算法. 本章主要涉及到的知识点有 ...
- [Swift]八大排序算法(七):归并排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- 八大排序算法的python实现(八)简单选择排序
代码: #coding:utf-8 #author:徐卜灵 # L = [6, 3, 2, 32, 5, 4] def Select_sort(L): for i in range(0,len(L)) ...
- 八大排序算法的python实现(五)堆排序
代码 #coding:utf-8 #author:徐卜灵 # 堆排序适用于记录数很多的情况 #与快速排序,归并排序 时间复杂一样都是n*log(n) ######################### ...
随机推荐
- Halcon学习之四:有关图像生成的函数
1.copy_image ( Image : DupImage : : ) 复制image图像 2.region_to_bin ( Region : BinImage : ForegroundGray ...
- C#带百分比的进度条
功能需求: 如果程序中会执行一个耗时的计算过程,我想在用户点击按钮后,弹出一个进度条窗口,显示正在执行的进度(最好能带有百分比),执行完成后,进度条窗口关闭,回到主程序窗口. 在关闭子窗口之前父窗体不 ...
- 真是服了:.EndEdit(); 如果没哟这个一句(c#更新ACCESS,datagridview无法更新第一行)
//保存 this.jbbBindingSource3.EndEdit(); this.jbbTableAdapter3.Update(this.databaseDataSet3.jbb);
- 什么是HUD
[什么是HUD] 游戏HUD的意思: 说直白点就是在屏幕上显示你的游戏相关信息,让玩家可以随时了解那些最重要最直接相关的内容.就是说,像我们玩游戏的时候,显示您的武器耐久度不够了,您的血量不足了等等. ...
- ParallaxEffect
[ParallaxEffect] ParallaxEffect是一种用简单的2D贴图来模拟3D效果的简易方法.譬如一棵树,摄像机俯视时,当树远离摄像机时,树顶偏远,当树靠近,树顶偏近.苹果官方Adve ...
- SpringDataRedis操作Redis简单案例
Jedis Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用.可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis.SRP等等,推荐使 ...
- SQL中对数据截取替换
REPLACE(要修改字段名,‘被替换的特定字符’,‘替换的字符’) 表结构和插入数据 CREATE DATABASE TEST GO USE TEST GO CREATE TABLE TestTab ...
- 2-2+CPU多级缓存-乱序执行优化
- Maven——依赖
一.依赖的范围 依赖的范围有几个可选值,我们用得到的是:compile.test.provided 三个. [1]从项目结构角度理解 compile 和 test 的区别 [2]从开发和运行这两个不同 ...
- Reading——The Non-Designer's Design Book
看这本书的时候真的好恨没有CS7在手><,不然我百度几张图来模拟下,体验下设计的快感. 人们总是很容易注意到在他们潜意识里存在的东西,比如说这个图: 我们很容易联想到微信,但是3 ...