用python进行归并排序,用Python做归并排序
分治法下的简单的归并排序算法复杂度O(n)=nlogn,用三个函数:
mergesort:合并排序
splitsort:单个子集排序(子集为不多于2个元素)
splitarry:递归拆分大的需排序数组,拆分为元素不多于2个子集合,然后调用splitsort和mergesort做归并排序。
这里的数组全部都用List类型
# -*- coding: utf-8 -*-
"""
Created on Sat Apr 06 18:42:12 2013
@author: zzcwing
"""
#简单的合并排序,假设输入一个List,将list拆分为不大于2个元素的子list,分别对各子list排序
#mergesort将已经排序的子序列合并排序,复杂度O(n)
def mergesort(s1,s2):
sortedlist=[]
i=0
j=0
s=0
M=True
while M:
if i==len(s1) and j
s=j
while s
sortedlist.append(s2[s])
s=s+1
M=False
elif i
s=i
while s
sortedlist.append(s1[s])
s=s+1
M=False
elif i==len(s1) and j==len(s2):
M=False
else:
if s1[i]<=s2[j]:
sortedlist.append(s1[i])
i=i+1
else:
sortedlist.append(s2[j])
j=j+1
return sortedlist
#子list排序,O(1)
def splitsort(scell):
ts=0
if len(scell)==2:
if scell[0]>scell[1]:
ts=scell[0]
scell[0]=scell[1]
scell[1]=ts
return scell
#递归拆分,将要排序的List递归拆分为只有小于等于2个元素的list,然后依次从底层逐级合并排序,复杂度O(n)=nlogn
def splitarry(wary):
lens=len(wary)
if lens>=3:
if lens%2==0:
mid=(0+lens)/2-1
else:
mid=(0+lens-1)/2
s1=wary[0:mid+1]
s2=wary[mid+1:lens]
return mergesort(splitarry(s1),splitarry(s2))
else:
return splitsort(wary)
#测试
print splitarry([2,7,3,5,1,9,6,16,15,14,4,8,10,11,13,12])
结果如下:
用python进行归并排序,用Python做归并排序相关推荐
- Python培训分享:python爬虫可以用来做什么?
爬虫又被称为网络蜘蛛,它可以抓取我们页面的一些相关数据,近几年Python技术的到来,让我们对爬虫有了一个新的认知,那就是Python爬虫,下面我们就来看看python爬虫可以用来做什么? Pytho ...
- python这个软件学会能做什么工作-学会Python真的有高收入?盯,请查收这份入坑指南...
学会Python真的有高收入?盯,请查收这份入坑指南 2018-10-10 20:51:00 567点赞 6312收藏 186评论 小编注:想获得更多专属福利吗?金币加成.尊享众测.专属勋章.达人福利 ...
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...
- python可以干嘛用-Python可以被用来做哪些神奇好玩的事情
原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...
- python语言能干什么-python语言能做什么
python语言可以用来做许多事,常见的一般有web开发.爬虫开发.人工智能以及游戏开发和构建桌面软件等等 Python是一个非常好用的编程语言而且开发速度快,语法简单通俗易懂,容易上手.非常适合初学 ...
- python编程能干什么-Python编程一般可以用来做什么
很多朋友可能会问,为什么要学Python, 就算学会了Python 可以用来干什么呢? 一般都会首先想到爬虫.爬虫不是说的那种虫子哦, 爬虫其实就是 类似于百度蜘蛛,谷歌蜘蛛一样的. 会自动的爬取网页 ...
- python能在生活中做什么-Python能在生活中做什么
很多人学习Python就是为了在人工智能.大数据等领域谋求一份高薪工作,Python其实很接地气,我们如果学习了Python而不把它作为一种谋生手段也可以在生活中解决很多问题,那么Python能在生活 ...
- 重庆python培训-重庆Python培训班学完能做什么
重庆优就业ptyhon培训 倾力打造Python全栈+人工智能课程 我要报名 Python是一种面向对象的动态类型语言,起初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加 ...
- python有哪些作用-python能用来做什么?Python都有哪些逆天的功能
原标题:python能用来做什么?Python都有哪些逆天的功能 随着人工智能的火爆,Python语言受到了大家广泛关注.Python是一门脚本语言,因为能将其他各种编程语言写的模块粘接在一起,又被大 ...
最新文章
- 使用字符串定界符(标准C ++)在C ++中解析(拆分)字符串
- idea下git log乱码问题
- Spring Boot中Spring data注解的使用
- 如何在Office 2007中查看关于对话框和版本信息
- 现在女生的床真的都是这样吗?
- Java 8 Friday:不再需要ORM
- 【Ubuntu】Ubuntu16.04安装 搜狗输入法 史上最详细
- Ubuntu NFS搭建过程
- 多媒体视频知识入门贴zt(一)
- mysql下载64位 csdn_Linunx-CentOS7安装mysql-5.7.23-linux-glibc2.12-x86_64.tar
- 韩国FSC公布新方案允许分离银行加密业务 以帮助小型交易所继续运营
- 进入docker容器中查看文件夹_理解 docker 容器中的 uid 和 gid
- Weighted Boxes Fusion加权检测框合并
- FreeRTOS动态创建任务
- 乐鑫ESP32-C3开发(一)简述和目录
- SSD固态硬盘怎么选?选对接口是关键
- Unity (一) 下载与安装
- vi/vim中复制粘贴命令
- c 语言url 编码转换,在线编码转换URL编码URL解码
- 店铺图片抓手,一键抓取商品详情高清图的工具
热门文章
- 关于module_param()宏
- POJ 2912 Rochambeau(难,好题,枚举+带权并查集)
- Python批量下载电子邮件附件并汇总合并Excel文件
- 批量统计多个PPTX文件中幻灯片总数量
- 虚拟Python环境可以这样创建
- 服务器怎么操作系统版本,服务器怎么操作系统版本
- C++ STL容器之string--常用接口
- 如何 方法内指令重排 进制_Java虚拟机jvm学习一:认识jvm的运行机制
- html悬停显示图片,JS实现悬停单元格显示图片
- linux C++获取当前文件所在路径的方法