博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典排序算法python回顾之五 归并排序
阅读量:6906 次
发布时间:2019-06-27

本文共 789 字,大约阅读时间需要 2 分钟。

hot3.png

归并操作

简介

归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。

归并操作的过程如下:

申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直到某一指针达到序列尾 将另一序列剩下的所有元素直接复制到合并序列尾

python代码

def merge(l1,l2):    final=[]    l1 = sorted(l1)     l2 = sorted(l2)    while l1 and l2:        if l1[0]<=l2[0]:            final.append(l1.pop(0))        else:            final.append(l2.pop(0))    return final+l1+l2

归并排序

简介

归并排序具体工作原理如下(假设序列共有n个元素):

1.将序列每相邻两个数字进行归并操作,形成floor(n/2)个序列,排序后每个序列包含两个元素 2.将上述序列再次归并,形成floor(n/4)个序列,每个序列包含四个元素 3.重复步骤2,直到所有元素排序完毕

python代码

def mergesort(List):    mid=int(len(List)/2)    if len(List)<=1:        return List    return merge(mergesort(List[:mid]),mergesort(List[mid:]))

转载于:https://my.oschina.net/vincent67/blog/186874

你可能感兴趣的文章
win10系统下cmd输入一下安装的软件命令提示拒绝访问解决办法
查看>>
git报错You are not allowed to force push code to a protected branch on this project
查看>>
times(NULL) Segmentation fault
查看>>
洛谷OJ P1010 幂次方 解题报告
查看>>
Python虚拟环境Virtualen简单使用
查看>>
给春节的宴客小吃来点小惊喜---绿茶甜心曲奇
查看>>
主动调用其他类的成员(普通调用和super方法调用)
查看>>
【2142】数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (SDUT)
查看>>
Prometheus 普罗米修斯监控
查看>>
Only the original thread that created a view hierarchy can touch its views的解决方案
查看>>
教你如何在项目中集成支付功能
查看>>
设计模式:设计模式概述&JDK中的应用
查看>>
select 标签级联 和 html增加/删除行
查看>>
java分模块项目在idea中使用maven打包失败(ps:maven常用到的命令)
查看>>
ARM编译器中预定义的宏
查看>>
几个网站
查看>>
js介绍及内容(1)
查看>>
The Infinite Loop belong to loop statement
查看>>
聊天室
查看>>
慢慢积累 ---------- unity 碰撞 和 碰撞之后
查看>>