用Python实现归并排序算法

2023-05-16

本文是本人在学习左神的java代码后改写为的python代码
归并排序算法的步骤是
如,对
[1, 2, 4, 9, 3, 55, 25, 64]
对分,对左半边和右半边进行递归
递归的终止条件是输入list的长度为1
如,对[11, 2, 4, 9, 3, 55, 25, 64]中
其左半边不断对分后
为[11, 2, 4, 9]
[11, 2]
[11] [2]
然后对二者进行merge
merge的规则是
开辟一个额外空间
设置左右指针,分别指左右半边的start
将更小的放在空间左边
process(arr,l,.mid)
process(arr,mid+1,r)
merge(arr,l,mid,r)

注意
1、mid = l + ((r-l)>>1)
这样即可找到奇数长度list的中点
或者偶数长度list的左中点
2、如何进行merge?
开辟的新空间是一个长度为r+1-l的数组
填充后
将空间中的元素按顺序填进
原数组arr的[l:r+1]中

def process(arr,l,r):
    if l == r:
        return 0
    mid = l + ((r-l)>>1)
    process(arr,l,mid)#0 3
    process(arr,mid+1,r) 
    merge(arr,l,mid,r)
    return arr
def merge(a,l,mid,r):
    left = l
    right = mid + 1
    temp = []
    while left <= mid and right <= r:
        if a[left] <= a[right]:
            temp.append(a[left])
            left += 1
        else:
            temp.append(a[right])
            right += 1
    while left <= mid:
        temp.append(a[left])
        left += 1
    while right <= r:
        temp.append(a[right])
        right += 1
    for i in range(l,r+1):
        a[i] = temp[i-l]
    return temp
length = 8#int(input())
arrx = [1, 2, 4, 9, 3, 55, 25, 64]#[int(x) for x in input().split(' ')]
flag = 0
direction = 1 if flag == '1' else 0
res = process(arrx,0,length-1)
resstr = ''
for x in res:
    resstr += str(x) + ' '
resstr = resstr[:-1] if direction == 0 else  resstr[:-1][::-1]
print(resstr)
        
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用Python实现归并排序算法 的相关文章

随机推荐

  • 8个免费查找文献的学术网站

    今天为大家推荐8个免费查找文献的学术网站 xff0c 希望能帮到大家 文章来源公众号智慧科研 1 Library Genesis Library Genesis号称是帮助全人类知识无版权传播的计划 网站上论文很多 xff0c 下载方便 xf
  • Linux服务器snmp协议v2/v3配置方法

    Snmp V2 配置方法 1 确保本机已经安装了snmp服务 root 64 idc rpm qa grep snmp net snmp libs 5 1 2 11 EL4 7 net snmp 5 1 2 11 EL4 7 如果没有 xf
  • 论文中AP与AR含义详细解释

    AP的含义和AR的本身含义就是查准率和查全率 这里的AP通过和IOU结合定义出两种分别 xff1a 1 当IOU大于0 5认定为真 2 当IOU大于0 75认定为真 3 从IOU大于0 5开始 xff0c 每次增加0 05 xff0c 分别
  • 学习笔记之ubuntu sudo apt-get update失败已经解决

    ubuntu sudo apt get update失败已经解决 运行sudo apt get update出现的错误如下 xff1a etc apt sudo apt get update Err http security ubuntu
  • oracle之index

    索引与表一样 xff0c 也属于段 xff08 segment xff09 的一种 里面存放了用户的数据 xff0c 跟表一样需要占用磁盘空间 索引是一种允许直接访问数据表中某一数据行的树型结构 xff0c 为了提高查询效率而引入 xff0
  • 通过jad/mc/redefine命令,在docker容器中实现动态更新代码的功能:

    通过jad mc redefine命令 xff0c 在docker容器中实现动态更新代码的功能 xff1a demos dockerfile from openjdk 8u232 jdk maintainer czm lt chengzhi
  • 对抗攻击与防御(2022年顶会顶刊AAAI、ACM、 ECCV、NIPS、ICLR、CVPR)adversarial attack and defense汇总

    文章目录 AAAI 39 2022 论文汇总CVPR 2022论文汇总ACM 39 2022论文汇总ECCV 39 2022论文汇总ICLR 39 2022论文汇总NIPS 39 2022论文汇总后续 AAAI 2022 论文汇总 AAAI
  • 时间序列(time serie)分析系列之时间序列特征(feature)7

    文章目录 1 问题描述 2 特征构建 2 1时间特征 2 2平移特征 2 3窗口特征 3 总结 1 问题描述 时间序列数据作为一种典型的数据 常存在于各行各业 比如客流 车流 销量 KPI指标等等 如何对时序数据加以利用 比如做未来预测 交
  • 数论

    质数的定义 对于大于1的自然数 如果它的因子中只有1和它本身 则是一个质数也称素数 从定义可以看出质数的取值范围是从2开始的 小于2的数肯定不是质数 质数的判定 试除法 假设 d是n的一个因子 那么n d 也是n的一个因子 因此我们只需要枚
  • Linux yolov4配置运行

    1 下载yolov4 git clone https github com AlexeyAB darknet git 如果没有git sudo apt get install git 2 编译 进入darknet的目录下 执行下面的语句进行
  • 吐血分类整理 Windows 11的170个快捷键

    1 Windows 11 中新增的键盘快捷键 xff1a 作用快捷键打开小部件窗格 xff0c 提供天气预报 当地交通 新闻 xff0c 日历Win 43 W切换快速设置 控制音量 Wi Fi 蓝牙 亮度滑块 对焦辅助和其他设置Win 43
  • SLAM算法解析

    ref xff1a https www jianshu com p eb25bd481475 嵌牛导读 xff1a SLAM Simultaneous Localization and Mapping 是业界公认视觉领域空间定位技术的前沿方
  • mininet基本使用与操作方法

    启动Wireshark 要使用OpenFlow Wireshark解剖器查看控制流量 xff0c 请先在后台打开wireshark xff1a sudo wireshark amp do wireshark amp rk amp 每个主机进
  • ArUco Marker检测原理

    标记检测过程包括两个主要步骤 xff1a 检测候选marker 在该步骤中 xff0c 分析图像以找到作为标记的候选的正方形形状 它首先进行自适应阈值处理以对标记进行分割 xff0c 然后从阈值图像中提取轮廓 xff0c 并丢弃那些非凸起或
  • 深度学习中epoch、batch、batch size和iterations详解

    1 epoch 在训练一个模型时所用到的全部数据 xff1b 备注 xff1a 一般在训练时都要使用多于一个的epoch xff0c 因为在神经网络中传递完整的数据集仅仅一次是不够的 xff0c 只有将完整的数据集在同样的神经网络中传递多次
  • matlab如何将帮助变成简体中文

    仅作为尝试记录 xff0c 大佬请跳过
  • ubuntu安装px4

    无人机自动驾驶软件系列 网址 https gaas gitbook io guide software realization build your own autonomous drone wu ren ji zi dong jia sh
  • Optitrack与ROS详细教程以及Motive的使用

    一 软件安装 运行安装包安装 USB 驱动 第 一 次 安 装 Motive 时 xff0c 会 提 示 安 装 OptiTrack USB 驱 动 xff08 例 如 xff1a OptiTrack USB Driver x64 xff0
  • 解决Centos7无法通过Putty进行ssh连接的问题

    这问题搞了我一个晚上 xff0c 晕 1 首先查看自己的Centos7能不能连上网 xff0c 如果不能连上网 xff0c 这里我尝试了CSDN里的多种方法都无用 xff0c 最后这篇博客解决了我的问题 xff0c 原因是在于默认安装 2
  • 用Python实现归并排序算法

    本文是本人在学习左神的java代码后改写为的python代码 归并排序算法的步骤是 如 xff0c 对 1 2 4 9 3 55 25 64 对分 xff0c 对左半边和右半边进行递归 递归的终止条件是输入list的长度为1 如 xff0c