【排序算法】之归并排序

归并思想

先拆分后合并 也就是分治;
拆分合并思想具体讲解可以参考以下链接:
b站链接:

点这里:b站归并思想具体讲解

看代码

代码中的例子参考上图和下图

public class MergeSort {//一、拆分部分public static void split(int[] arr,int left,int right,int[] temp){//递归拆分if (left<right){int mid=(left+right)/2;//左递归分解split(arr, left, mid, temp);//右递归分解split(arr, mid+1, right, temp);//合并merge(arr,left,right,mid,temp); //这么理解就像递归就是重复干一件事 你调用执行就可//上面 先左递归合并 再右递归合并}}//二、合并部分/*** @param arr   要进行排序的初始数组* @param left  左序列数组的初始索引* @param right 右序列数组的初始索引* @param mid   左序列和右序列的交接地方 中间索引*/public static void merge(int[] arr, int left, int right, int mid, int[] temp) {int i = left;//初始化i,作为左序列的初始索引int j = mid + 1;//初始化j,作为右序列的初始索引 mid是向下取整得来的int index = 0;//temp数组的当前索引//1.左右两边序列按照规则填充到temp数组 直到有一边处理完毕//循环条件 两边的数据均为处理完while (i <= mid && j <= right) {if (arr[i] <= arr[j]) { //左元素<=右 就把左里面的首位填充到temptemp[index] = arr[i];i++;//i后移index++;//index后移} else {//反之就填充右里面的首位temp[index] = arr[j];j++;index++;}}//当while循环结束 就有其中一边先处理完毕//2.把另一边中剩下的的数据直接依次填充到temp数组//满足哪个就去哪个循环进行填充while (j <= right) {temp[index] = arr[j];index++;j++;}while ((i <= mid)) {temp[index] = arr[i];index++;i++;}//3.temp数组拷贝到arr中//只有最后一次拷贝是把整个temp拷贝到arr数组中 前几次都是拷贝temp中的一部分//因为前几次的合并没有占满temp数组index=0;//temp索引归0;int tempLeft=left;//System.out.println("tempLeft="+tempLeft+" "+"right="+right);//第1次合并 tempLeft=0,right=1;//第2次合并 tempLeft=2,right=3;//第3次合并 tempLeft=0,right=3;//第4次合并 tempLeft=4,right=5;//第5次合并 tempLeft=6,right=7;//第6次合并 tempLeft=4,right=7;//第7次合并 tempLeft=0,right=7;//最后一次合并while (tempLeft<=right){arr[tempLeft]=temp[index];tempLeft++;index++;}}//主方法public static void main(String[] args) {int[] arr = new int[]{8, 4, 5, 7, 6, 2, 3, 9};int[] temp=new int[arr.length];split(arr,0, arr.length-1,temp);System.out.println(Arrays.toString(arr));}
}

在这里插入图片描述

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

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

相关文章

springcloud getway 网关之过滤器filter

1. Filter的使用 filter是Gateway的三大核心之一&#xff0c;路由过滤器可用于修改进入HTTP请求和返回的HTTP响应&#xff0c;路由过滤器只能指定路由进行使用。Gateway内置了多种路由过滤器&#xff0c;他们都由GatewayFilter工程 2. Filter的作用 当我们有很多个服务时&am…

【机器学习 | 假设检验系列】假设检验系列—卡方检验(详细案例,数学公式原理推导),最常被忽视得假设检验确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

2024 年,新程序员如何与AI共赢!!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

如何在Facebook Business Manager进行企业认证

Facebook Business Manager&#xff0c;简称BM&#xff0c;按照字面意思理解就是Facebook官方的商务管理平台&#xff0c;是供广告主团队去使用的一个管理工具。BM可以绑定Facebook公共主页、广告账户等一系列Facebook账号。通过BM&#xff0c;企业就可以在一个后台&#xff0c…

Amazon SageMaker: 拓展机器学习边界,塑造未来创新趋势

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 近期在 re:Invent 2023 大会上&#xff0c;亚马逊云科技发布了一…

Stable Diffusion 源码解析(1)

参考1&#xff1a;https://blog.csdn.net/Eric_1993/article/details/129393890 参考2&#xff1a;https://zhuanlan.zhihu.com/p/613337342 1.StableDiffusion基本原理1.1 UNetModel、FrozenCLIP 模型1.2 DDPM、DDIM、PLMS算法 2. Runwayml SD 源码2.1 Img2Img Pipeline2.2 DD…

蚁群优化算法ACO

蚁群优化算法模拟了自然界中蚂蚁的觅食行为&#xff0c;信息素浓度的大小表征路径的远近&#xff0c;信息素浓度越高&#xff0c;表示对应的路径距离越短。同时&#xff0c;路径上的信息素浓度会随着时间的推进而逐渐衰减。 1.过程 &#xff08;1&#xff09;初始化参数 蚁群…

Nginx+Tomcat实现负载均衡和动静分离

目录 前瞻 动静分离和负载均衡原理 实现方法 实验&#xff08;七层代理&#xff09; 部署Nginx负载均衡服务器(192.168.75.50:80) 部署第一台Tomcat应用服务器&#xff08;192.168.75.60:8080&#xff09; 多实例部署第二台Tomcat应用服务器&#xff08;192.168.75.70:80…

8080端口被占用怎么解决,并结束释放8080端口

8080端口是被用于WWW代理服务的&#xff0c;可以实现网页浏览&#xff0c;经常在访问某个网站或使用代理服务器的时候&#xff0c;Win10 8080端口被占用解决方法吧。 1、按【 Win r】 2、运行窗口&#xff0c;输入【cmd】命令&#xff0c;按【确定或回车】&#xff0c;打开命…

基于SpringBoot 校园招聘系统设计与实现(源码+文档+可视化HTML+数据库)

摘 要 基于SpringBoot 校园招聘系统是一种基于Java技术的校园招聘和可视化展示的系统。该系统通过采集和整合各类招聘网站、社交媒体等渠道的数据&#xff0c;对招聘岗位进行深入分析&#xff0c;并将分析结果以直观、易懂的可视化形式呈现。系统能够自动从多个数据源获取招聘…

google-guava工具包常用工具类详解(持续更新)

文章目录 一、google-guava工具包简介1、概述2、引包 二、常用工具类1、LoadingCache 缓存2、RateLimiter限流器3、EventBus事件总线&#xff08;1&#xff09;基本使用&#xff08;2&#xff09;多消费者&#xff08;3&#xff09;DeadEvent&#xff08;4&#xff09;AsyncEve…

电子学会C/C++编程等级考试2023年03月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:拼点游戏 C和S两位同学一起玩拼点游戏。有一堆白色卡牌和一堆蓝色卡牌,每张卡牌上写了一个整数点数。C随机抽取n张白色卡牌,S随机抽取n张蓝色卡牌,他们进行n回合拼点,每次两人各出一张卡牌,点数大者获得三颗巧克力,小者获…

Flutter:web项目跨域问题解决

前后端解决系列 文章目录 一、Flutter web客户端解决本地环境调试跨域问题二、Flutter web客户端解决线上环境跨域问题 一、Flutter web客户端解决本地环境调试跨域问题 就一句命令【--web-browser-flag "--disable-web-security"】&#xff0c;用来屏蔽浏览器域名请…

大模型时代-让AI自己开发自己

一、前言 AI能自己开发自己或者开发和一个很像自己的东西吗&#xff1f;显然是可以的&#xff01;因为AI模型的算法&#xff0c;基本就是学习和递归 二、大模型的算法实现例子 本例子就是通过AI模型来写 大模型的实现通常涉及到深度学习框架和大量的计算资源。具体的算法代…

AI元素深化人类发展之路:挑战与趋势

AI元素深化人类发展之路&#xff1a;挑战与趋势 前言&#xff1a;1.AI元素推动人类发展的方面&#xff1a;2.AI元素引发的挑战与焦虑&#xff1a;3.人类与AI的未来趋势&#xff1a; 前言&#xff1a; 随着AI技术的迅猛发展&#xff0c;人工智能的各种元素逐渐融入我们的生活&a…

elasticsearch和springboot对应版本

网上找了半天没找到&#xff0c;最后还是得上官网找 https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.html Spring Data Release TrainSpring Data ElasticsearchElasticsearchSpring FrameworkSpring Boot 2023.1 (Vaughan) 5.2.x 8.…

Java入门学习笔记二

一、抽象类 当编写一个类时&#xff0c;我们往往会为该类定义一些方法&#xff0c;这些方法是用来描述该类的行为方式&#xff0c;那么这些方法都有具体的方法体。 分析事物时&#xff0c;发现了共性内容&#xff0c;就出现向上抽取。会有这样一种特殊情况&#xff0c;就是功…

Python实现高效摸鱼,批量识别银行卡号并自动写入Excel表格

前言 每当有新员工入职&#xff0c;人事小姐姐都要收集大量的工资卡信息&#xff0c;并且生成Excel文档&#xff0c;看到小姐姐这么辛苦&#xff0c;我就忍不住要去帮她了… 于是我用1行代码就实现了自动识别银行卡信息并且自动生成Excel文件&#xff0c;小姐姐当场就亮眼汪汪…

智能冶钢厂环境监控与设备控制系统(边缘物联网网关)

目录 1、项目背景 2、项目功能介绍 3、模块框架 3.1 架构框图 3.2 架构介绍 4、系统组成与工作原理 4.1 数据采集 4.2 指令控制 4.3 其他模块 4.3.1 网页、qt视频流 4.3.2 qt搜索进程 5、成果呈现 6、问题解决 7、项目总结 1、项目背景 这个项目的背景是钢铁行业的…

tesseract-ocr安装使用

描述&#xff1a; 在centos上安装 tesseract 并在springboot项目中使用 步骤一&#xff1a;安装 确认使用的版本tesseract和test4j版本需要匹配&#xff0c;这里选择最新版 tesseract5.3.3 &#xff0c;test4j 5.9.0 版本匹配可查看 Releases nguyenq/tess4j GitHub 或…