public class MergeSortTest {
public static void main(String[] args){
int[] arrs = new int[]{3,5,6,2,4,1,6,8,4,3,0};
mergeSort(arrs,0,arrs.length - 1);
System.out.println(Arrays.toString(arrs));
}
public static void mergeSort(int[] arrs,int begin,int end){
int middle = arrs.length / 2; //一分为二
//分别初始化左右两边数组
int[] left = new int[middle - begin];
int[] right = new int[end - middle + 1];
for(int i = 0; i < middle - begin;i++){
left[i] = arrs[i + begin];
}
for(int i = 0; i < end - middle + 1; i++){
right[i] = arrs[i + middle];
}
//分别对左右两边数组作归并
if(left.length > 1) mergeSort(left,0,left.length - 1);
if(right.length > 1) mergeSort(right,0,right.length - 1);
//合并左右两边数组
merge(arrs,left,right);
}
//执行merge的前提是left与right都已经排好序
public static void merge(int[] arrs,int[] left,int[] right){
int m = 0;
int n = 0;
for(int j = 0; j < arrs.length;j++){
if(m == left.length){
arrs[j] = right[n];
n++;
continue;
}
if(n == right.length){
arrs[j] = left[m];
m++;
continue;
}
if(left[m] < right[n]){
arrs[j] = left[m];
m++;
}else{
arrs[j] = right[n];
n++;
}
}
}
}
相关推荐
从零构建:如何在VSCode中为HBuilderX迁移的UniApp项目搭建TypeScript支持环境
本文详细指导如何将HBuilderX中的UniApp项目迁移至VSCode并搭建TypeScript支持环境。通过pnpm包管理器初始化项目、配置tsconfig.json和vite.config.ts文件,实现工程化迁移与TypeScript深度集成,提升开发效率和代码质量。
归并排序
/** * @Description 归并排序 * 递归排序就是在逻辑上将一个数组分成两个数组,再将两个数组再各自拆分成两个数组, * 以此类推,然后再进行排序 * @auther Eleven * @create 2020-04-05 14:02 **/ public class MergeSort { public static void main(String[] ar...
Python爬虫:无账号无限制获取企查查信息
无限制企查查爬虫 通过网上爬虫获取了全国所有企业,然后就需要补充企业信息,首先想到的就是企查查,启信宝等专业网站,最终选择了企查查,尝试了多种方法: 1、selenium爬虫,绕过企查查的登录验证,但账号和IP限制太大,最终放弃 2、通过requests直接请求+cookies,遇到了cookie有效期和限制问题 不断的尝试和修改参数,最终发现一种有效方式selenium+ wep 只需要IP代理,不需要账号,没有限制,因为是没有登录,拿到的信息有限,能展示的都能获取。 一、初始化..
头歌 归并排序
【代码】头哥 归并排序。
手把手教你用NetToPLCsim搭建西门子S7-1200仿真环境(附避坑指南)
本文详细指导如何利用NetToPLCsim与PLCSIM搭建西门子S7-1200仿真环境,实现无硬件条件下的PLC程序测试与上位机通信开发。内容涵盖软件选型、环境部署、关键参数配置及通信测试,并重点提供了连接失败、数据读写错误等常见问题的深度避坑指南,帮助工程师高效构建可靠的虚拟调试工作流。
学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做?
学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做?
头歌作业之排序1、2、3、4
为了完成本关任务,你需要掌握:链表的相关操作和掌握选择排序算法。为了完成本关任务,你需要掌握:直接插入排序的算法思想。为了完成本关任务,你需要掌握:折半插入排序算法。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写函数实现折半插入排序算法。3 9 5 8 7 (数字序列)
BurpSuite工具HaE插件好用正则收集
数据集合面板里面直接查询捕获到的相关数据内容,省去一个个翻找数据包内容的烦恼。插件捕获到匹配正则表达式的数据包后,可以在。可以对正则条目进行添加、编辑、删除。规则信息管理,我们点击。
头歌数据结构实训参考---十大经典排序算法
【代码】头歌数据结构实训参考---十大经典排序算法。
七天征服AutoSAR/SomeIP_04理解SoAD_LdCom_SD模块
本文深入解析了AUTOSAR平台下SOME/IP协议栈的架构设计与模块交互逻辑。重点剖析了SD模块(服务发现)和LdCom模块(通信适配层)与SoAD(Socket适配层)之间的复杂关联关系。文章通过详细配置表格和代码示例,阐述了服务注册发现机制、PDU路由控制策略、数据收发流程等核心功能,并形象地将三模块关系类比为"三极管结构"。特别强调了SD模块通过RoutingGroup实现通信路径的动态开关控制,以及LdCom模块在协议栈中的透传转发作用,帮助开发者理解配置规则背后的底层原理,提
2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml
本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。
【排序算法】—— 归并排序
合并的具体思路:定义三个指针分别指向第一、二个序列和临时序列的第一个元素,然后对指针指向的元素进行比较,将较小的那一个元素添加到临时序列中,随即将对应的指针往后移动一位,直到指向第一个序列或第二个序列的指针走完,因为两个序列都是有序的,所以此时将没有走完的指针所指向的位置的后面所有元素都放入临时序列中即可。因此,我们的问题就得以解决了,第一步就是。来判断此时序列中元素的个数和该子序列在整个序列中的具体位置,然后不断将其从中间进行分割,直到只有一个元素,此时退出递归,回到上一层,进行合并即可。
华为OD机试真题 新系统【进制转换后自定义排序】
华为OD机试 新系统真题【进制转换后自定义排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【进制转换后自定义排序】多语言题解。
【十大排序算法】归并排序
归并排序,如同秋日落叶,分散而细碎, 然而风吹叶动,自然而有序, 彼此相遇,轻轻合拢, 最终成就,秩序之谧。
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
排序算法之归并排序分析
归并排序 排序思想: 归并排序使用的就是分治思想,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。 这种将大问题分解成小问题的思想与递归很像,分治和递归的区别就是:分治是一种解决问题的处理思想,递归是一种编程技巧 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 归并排序...
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
【排序算法】 ——— 归并排序总结
文章目录
排序算法——归并排序
排序算法——归并排序 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 例如一组数组{9,8,7,6,5,4,3,2,1}使用归并排序顺序排序,可分割为{9,8,7,6,5}和{4,3,2,1},{9,8,7,6,5}可分割为{9,8,7}和{6,5},{9,8,7}可分割为{9,8}和{7},{9,8}可分割为{9}和{8},对{9}和{8}归并得到{8,9},第一趟数组完
十大排序算法之归并排序
一、算法简介 归并排序(Merge sort)是建立在归并操作上的一种稳定、有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 实现方法分为 自上而下的递归 自下而上的迭代 二、原理 1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再...
排序算法之 - 归并排序
归并排序也有类似于快速排序的 切割 的过程,但是快速排序会选择基准值,而归并排序则直接将列表 尽可能两等分(若长度为奇数,那么有一侧会少一个元素,左侧还是右侧是无妨的)。当分割到左右两侧都只剩下一个元素的时候,分割完成,开始往上层拼接结果。拼接的大致流程是:取左右两侧队首的元素,比较两者大小,较小的先进入已排序列表。重复执行此流程,直至有一侧为空,将另一侧剩余元素直接合并到已排序列表的右侧。鬼归...
归并排序比较次数_排序算法
排序指的是将一组对象按照某种逻辑重新排列的过程,在计算机早期,大约30%的时间都用在排序上,今天这个比例降低了,这得益于高效的排序算法。排序有大量的应用场景,它往往是解决问题的第一步,它很基础但很重要,比如快速排序就被誉为20世纪科学和工程领域10大算法之一。排序如此有用的一个重要原因是在一个有序数组中查找一个元素比在一个无序数组中查找要简单的多。今天我们就来研究一下。本文从排序的经典算法开始分析...
1051



被折叠的 条评论
为什么被折叠?



