二分归并排序算法_第五篇排序算法|归并排序

0x01,前言闲叙

最近几年很少看电视了,因为没时间看了,除了偶尔刷刷头条,基本上不会花大块的时间沉迷于电视剧,综艺,这或许就是短视频时代所带来的一些改变吧,我们都会深受其中。

0x02,先看下这篇文章要讲述的内容大概吧

e289f140065a9dcbfd9df633b531c989.png

0x03,什么是归并排序?

【百度百科介绍】归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

0x04,归并排序程序实现

public class MergeSortTest {    public static void main(String[] args) {        int[] arr = {1, 3, 2, 4, 9, 8, 10, 7, 6, 5, 10, 12, 13, 15, 14};        int left = 0;        int right = arr.length - 1;        mergeSort(arr, left, right);        for (int num : arr        ) {            System.out.print(num + "\t");        }    }    private static int[] mergeSort(int[] arr, int left, int right) {        if (left == right) {            return new int[]{arr[left]};        }        int mid = left + (right - left) / 2;        int[] leftArr = mergeSort(arr, left, mid);        int[] rightArr = mergeSort(arr, mid + 1, right);        int[] newArray = new int[leftArr.length + rightArr.length];        int m = 0;        int i = 0;        int j = 0;        while (i < leftArr.length && j < rightArr.length) {            newArray[m] = leftArr[i] < rightArr[j] ? leftArr[i] : rightArr[j];            i++;            j++;            m++;        }        while (i < leftArr.length) {            newArray[m++] = leftArr[i++];        }        while (j < rightArr.length) {            newArray[m++] = rightArr[j++];        }        return newArray;    }}

0x05,归并排序的程序图片版

2b536b18d54eae0c83f8674ff9b28edc.png

0x06,总结一下

看这道题的时候先把上面的二分查找理解一下,这样就基本上理解了如何进行划分数组的操作,数据有序合并就是正常逻辑的实现了

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

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

相关文章

Python time asctime()方法

描述 Python time asctime() 函数接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"&#xff08;2008年12月11日 周二18时07分14秒&#xff09;的24个字符的字符串。 语法 asctime()方法语法&#xff1a; time.asctime([t])) 参数 • t – 9个元素的元组…

linux系统访问文件夹ls,Linux系统目录结构,文件类型以及ls、alias命令

一、Linux目录结构登录系统之后&#xff0c;在当前命令窗口输入以下指令&#xff0c;/是Linux操作系统里最核心的一个目录&#xff0c;所有的文件和目录全部在它下面&#xff0c;所以称为“根目录”&#xff1a;# ls / //列出根目录下的文件得到如图结果&#xff1a;如图上图所…

我所理解的闭包

闭包最主要概念&#xff1a;有权访问另一个函数作用域内变量的函数 function add(){var result;result function(x,y){return yx } return result }var sum new add(); console.log(sum(10,20))/*30*/ 函数会执行的主要原因就在于() function createFunct…

qq文件对方接收后一定会有提示吗_为什么微信、QQ不推出已读功能?因为它敢出网友就敢卸载...

12月14日&#xff0c;腾讯 QQ突然发起了一个"很吓人"的调查——你希望 QQ 出已读功能吗&#xff1f;在短时间内&#xff0c;有 超过3000 人参与&#xff0c;其中有 2660 人(71.6%)投票 "你出我就卸载 QQ"选项&#xff0c;大家旗帜鲜明地表示&#xff0c;并…

Python time localtime()方法

描述 Python time localtime() 函数类似gmtime()&#xff0c;作用是格式化时间戳为本地的时间。 如果sec参数未输入&#xff0c;则以当前时间为转换标准。 DST (Daylight Savings Time) flag (-1, 0 or 1) 是否是夏令时。 语法 localtime()方法语法&#xff1a; time.localt…

实例11:python

#古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c; #小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; #!/usr/bin/python -- coding: UTF-8 -- #兔子的规律…

linux c c 常用的日志库,mslog: 一款超轻量级的C日志库,无需依赖额外的库,测试或移植过的系统有Linux(ubuntu,centos),Windows以及部分嵌入式设备;...

mslog1.综述​ 一款超轻量级的C日志库&#xff0c;无需依赖额外的库,库的设计目标为"简洁,可移植性强"。测试或移植过的系统有Linux(ubuntu,centos),Windows以及部分嵌入式设备。2.如何使用参考mslog_api_sample程序;关于编译与安装&#xff0c;可参见make help;3.功…

Vue中正确使用jQuery的方法

题主Vue小白&#xff0c;入门demo时想在其中使用jQuery&#xff08;当然可能是不推荐的做法哈&#xff0c;毕竟俩儿的风格不一样&#xff0c;但万一你就需要呢 _^ ^_&#xff09;&#xff0c;结果遇到问题&#xff0c;最终倒腾解决。 编译报错&#xff1a;$ is undefined or no…

python中superclass是什么_深度解析并实现python中的super(转载,好文)

大神半个月的成绩&#xff0c;让我看的叹为观止&#xff0c;建议看原帖地址&#xff0c;会让你对Python的描述符有更强的认识。原文链接&#xff1a;https://blog.csdn.net/zhangjg_blog/article/details/83033210深度解析并实现python中的super概述super的定义函数bound和描述…

实例12:python

#判断101-200之间有多少个素数&#xff0c;并输出所有素数。 #程序分析&#xff1a;判断素数的方法&#xff1a;用一个数分别去除2到sqrt(这个数)&#xff0c;如果能被整除&#xff0c;则表明此数不是素数&#xff0c;反之是素数。 #!/usr/bin/python -- coding: UTF-8 -- #…

linux显示gz文件字节大小,[原创] 如何不解压tar.gz文件查看其中的文件大小

如果你有一个上百G的tar.gz文件&#xff0c;要查看里面的每个文件的大小的话&#xff0c;解压出来可能太费时间&#xff0c;而且要占用大量磁盘空间。因此&#xff0c;不解压查看文件大小很有必要。不解压一个tar.gz文件&#xff0c;查看里面的文件明细的命令为&#xff1a;tar…

javascript用户登录_SAP HANA XS的JavaScript安全事项

公众号&#xff1a;matinal前言部分我们都知道web程序都有潜在的安全隐患问题&#xff0c;那么SAP HANA XS的JavaScript也是一样&#xff0c;使用服务器端JavaScript编写应用程序代码&#xff0c;也有潜在的外部攻击&#xff08;和风险&#xff09;。注意事项下面列出几点注意事…

周进度报告8

在本周中主要因为c小学期&#xff0c;对Java的学习较少&#xff0c;下周会合理安排时间转载于:https://www.cnblogs.com/NCLONG/p/9574965.html

Python sqrt() 函数

描述 sqrt() 方法返回数字x的平方根。 语法 以下是 sqrt() 方法的语法: import math math.sqrt( x ) 注意&#xff1a;sqrt()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;通过静态对象调用该方法。 参数 • x – 数值表达式。 返回值 返回数字x的平方根。 实例…

linux 网络设备 安装,Linux_Linux系统配置网络详解,一.安装和配置网络设备- phpStudy...

一.安装和配置网络设备在安装linux时,如果你有网卡,安装程序将会提示你给出tcp/ip网络的配置参数,如本机的ip地址,缺省网关的ip地址,DNS的ip地址等等.根据这些配置参数,安装程序将会自动把网卡(linux系统首先要支持)驱动程序编译到内核中去.但是我们一定要了解加载网卡驱动程序…

python透明图片合并_Python用OpenCV合并图片,添加透明部分

看了python网上图片合并都是互抄&#xff0c;其实大部分人需要的合并只需要把一个图片粘贴到另一张图片就行了。下面是合并前的图片&#xff1a;底图下面是需要合并的素材&#xff1a;需要合并的素材合并后的效果&#xff1a;合并后的图片图片准备工作&#xff1a;1: 确保两张图…

实例13:python

#题目&#xff1a;打印出所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方…

spring的基本用法

关于spring的几种注入方式 理解类之间的关联关系 一&#xff0c;set注入 在这之前我们得spring的jar包&#xff0c;可以去官网下&#xff0c;添加到WebContent下 WEB-INF 下 lib里 这种方式就得首先实现set方法&#xff0c;现在以英雄&#xff08;Hero接口&#xff09;和武器&a…

python u_对python 命令的-u参数详解

缘起&#xff1a;今天在看arcface的训练代码&#xff0c;在shell脚本中运行python 命令时后面加了-u 参数(python -u xx.py)&#xff0c;于是对这个参数进行了下小研究。准备知识用网上的一个程序示例来说明&#xff0c;python中标准错误(std.err)和标准输出(std.out)的输出规则…

linux下anaconda3安装教程,Ubuntu18.04 安装 Anaconda3的教程详解

Anaconda指的是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包&#xff0c;Anaconda 的下载文件比较大(约 531 MB)&#xff0c;如果只需要某些包&#xff0c;或者需要节省带宽或存储空间&#xff0c;也可以使用…