Python使用分治算法作归并排序

对于分治算法的一个较为常规的应用中,归并排序是一个使用分治算法的排序方式。给定一个随机排序的数组,我们要将其元素按照升序或者降序的方式进行排序,可以设想到这样的一种算法,如果一个数组的上半部分和下半部分已经排好序,依靠这个条件来快速的将整个数组转换为排序好的形式。

假设当前有的两个是已经排序好的数组如图所示

添加图片注释,不超过 140 字(可选)

要将上图的已经排序好的数组合并成一个排序好的大数组,首先用两个指针指向数组的首元素,其次比较指针指向元素大小,将数值小的元素放入第三个数组 数值大的元素对应指针不变,然后将指向小元素的指针往后挪一位。该操作依次进行,如果某个子数组中的元素已经被挪动完毕了,那就可以将另一个数组剩下的元素直接插入新数组的末尾,对于上图中用两个指针分别指向元素3和9,由于3比9小,所以把元素3放入到新数组中,原来的指向元素3的指针向后移动一个元素指向27,而这个时候27是大于9的,就需要把9放入到新数组中 将原来指向9的指针向后移动一个元素指向10元素,这个过程不断的继续进行,最后就可以把两个已经排序好的数组归并成为一个排序好的数组。

而通过这我们也可以知道,对于一个没有排序好的数组,如果将其分解成为两个子数组,然后将两个子数组排序好,使用上面描述的归并方法将两个数组归并成为一个排好序的数组,就可以实现数组排序。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚观早报 | 360 AI搜索App上线;岚图汽车与京东达成合作

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 1月30日消息 360 AI搜索App上线 岚图汽车与京东达成合作 三星电子在硅谷新设实验室 小米平板7系列参数曝光 Spa…

【全csdn最前沿LVGL9】基础对象lv_obj

文章目录 前言一、LVGL9的下载二、基础对象lv_obj2.1 概述2.2 布局2.3 lv_obj的使用创建一个lv_obj设置大小设置位置设置对齐父对象与子对象事件 总结 前言 LVGL(LittlevGL)是一个开源的嵌入式图形库,用于在嵌入式系统中创建用户界面。LVGL提…

故障诊断 | 一文解决,BiLSTM双向长短期记忆神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现BiLSTM双向长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

qt-C++笔记之contains()和isEmpty()函数、以及部分其他函数列举

qt-C笔记之contains()和isEmpty()函数、以及部分其他函数列举 code review! 文章目录 qt-C笔记之contains()和isEmpty()函数、以及部分其他函数列举contains()isEmpty() 类似的其他函数列举通用容器类函数字符串特有函数 在Qt C开发中, contains() 和 isEmpty()…

【深度学习】全连接神经网络

全连接神经网络 全连接神经网络的结构 整体结构 神经网络:类似神经元,前一层可以不断地传递给下一层。 神经网络模型由多个单元结构组成。 单元结构 单元结构的数学公式: a = h ( w x + b ) a=h(wx+b) a=h(wx+b) h(x):激活函数 比如sigmoid就是激活函数之一隐藏层大多…

Sketch 99.5中文 优秀的网站和移动应用设计软件

Sketch for mac用于数字世界的图形设计。在一个屡获殊荣的软件包中提供强大的工具和优雅的界面。因为做美丽的事情应该是一种快乐,而不是负担。 软件下载:Sketch 99.5中文激活版下载 Sketch支持每层多个填充,边框和阴影;具有强大的…

数据结构day7

1.思维导图 1.二叉树递归创建 2.二叉树先中后序遍历 3.二叉树计算节点 4.二叉树计算深度。 5.编程实现快速排序降序

点云数据集标注的相关工具

点云数据标注是三维计算机视觉领域中重要的一环,专门用于为点云数据添加语义信息,以便进行后续的机器学习和深度学习处理。以下是一些用于点云数据标注的软件及其特点的详细介绍: 1. CloudCompare 描述:CloudCompare是一个开源软…

python中的josn方法相关介绍

如果需要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。…

太美医疗冲刺港交所上市:融资“数据打架”,老虎基金提前退出

1月29日,浙江太美医疗科技股份有限公司(下称“太美医疗”或“太美医疗科技”)递交招股书,准备在港交所主板上市。特别说明的是,该公司曾于2021年12月29日在上海证券交易所科创板递交上市申请。 据贝多财经了解&#x…

2024前端面试总结—JS篇(文档持续更新中。。。)

1、Event Loop(事件循环)机制 JS是单线程的非阻塞语言 为什么是单线程(如果js是多线程,那么两个线程同时对同一个Dom进行操作,一个增一个删,浏览器该如何执行?) 非阻塞(…

2024/1/30 备战蓝桥杯 3-1 栈

目录 小鱼的数字游戏 P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 表达式括号匹配 P1739 表达式括号匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 【模板】栈 B3614 【模板】栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 小鱼的数字…

使用Neo4j做技术血缘管理

目录 一、neo4j介绍 二、windows安装启动neo4j 2.1下载neo4j 2.2 解压文件 2.3 启动neo4j 三、neo4j基础操作 3.1 创建结点和关系 3.2 查询 3.3 更改 3.4 删除 四、技术血缘Demo实现 4.1 构建节点对象 4.2 构建存储对象 4.3 创建有属性关联关系 4.4 最后是图结果…

中科星图——2020年全球30米地表覆盖精细分类产品V1.0(29个地表覆盖类型)

数据名称: 2020年全球30米地表覆盖精细分类产品V1.0 GLC_FCS30 长时序 地表覆盖 动态监测 全球 数据来源: 中国科学院空天信息创新研究院 时空范围: 2015-2020年 空间范围: 全球 数据简介: 地表覆盖分布…

【四】【C++】日期类简单实现

编写GetMonthDay函数 int GetMonthDay(int year, int month) {static int monthDays[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (month 2 && ( (year % 4 0 && year % 100 ! 0) || year % 400 0)) {return 29;}return monthDays[month]…

瑞士0.5米高程地形瓦片数据介绍

一、背景 瑞士是位于中欧的一个国家,以其美丽的自然风光、高质量的生活和强大的金融体系而闻名,其位于欧洲中部,四面环山,与德国、法国、意大利、奥地利和列支敦士登等国家接壤。瑞士境内有许多湖泊和阿尔卑斯山脉的一部分。瑞士…

在 Linux 中挂载新硬盘动态使用

目录 一:添加硬盘并且格式化 二:创建逻辑卷 三:挂载卷到目录 在 Linux 中挂载新硬盘并进行格式化的操作可以按照以下步骤进行: 一:添加硬盘并且格式化 查看现有分区状态和服务器安装的硬盘状态: df -…

node版本切换(nvm)

1.https://github.com/coreybutler/nvm-windows/releases 进入下载nvm管理器 点击下载如果访问不到,可以使用我已下载好上传的 2.将下载文件解压到nvm目录中 3.配置nvm的环境变量 在系统变量中添加: NVM_HOME :包管理器的文件目录 NVM_SYML…

Workfine:用「订阅制」破解中小企业数字化转型困局

中小企业是国民经济和社会发展的重要力量,是扩大就业的载体,是改善民生的关键。《“十四五”数字经济发展规划》明确提出大力推进数字产业化转型,实施中小企业数字化赋能专项行动。数字化转型有利于中小企业降低成本、提高效率、加速转型升级…

记录解决报错--These dependencies were not found jsencrypt lodash-es

1.场景 idea打包vue,报错退出,缺少依赖 These dependencies were not found jsencrypt lodash-es2.解决步骤 ①到相关目录下直接安装依赖,npm install --save jsencrypt lodash-es。我这里是没安装成功,原因是很多依赖冲突。…