当前位置: 首页 > news >正文

归并排序,自顶向下

归并排序主要两步,一步是划分区间,另一步是合并两个区间

这个算法的稳定性更好,对比快排这种,如果整体是倒序的话,快排的复杂度会达到o(n^2),归并会更稳定。

划分区间主要是递归去实现,下面给出代码

package com.codeking.sortTest;/*** @author xiongjl* @since 2023/10/31  13:19*/
public class sortTest {public static void main(String[] args) {int[] arr = {1, 2, 5, 4, 9, 8, 7};mergeSort(arr, new int[arr.length], 0, arr.length - 1);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]);}}// 归并排序static void mergeSort(int[] arr, int[] temp, int left, int right) {// 如果left和right相等,说明只有以一个元素if (left < right) {int mid = left + (right - left) / 2;// 处理左右区间mergeSort(arr, temp, left, mid);mergeSort(arr, temp, mid + 1, right);// 合并区间merge(arr, temp, left, mid, right);}}// 合并有序数组 [5,4,2,6]static void merge(int[] arr, int[] temp, int left, int mid, int right) {int leftPos = left, rightPos = mid + 1, pos = left;// 两边都有元素while (leftPos <= mid && rightPos <= right) {if (arr[leftPos] < arr[rightPos]) {temp[pos++] = arr[leftPos++];} else {temp[pos++] = arr[rightPos++];}}// 处理剩下的元素while (leftPos <= mid) {temp[pos++] = arr[leftPos++];}while (rightPos <= right) {temp[pos++] = arr[rightPos++];}// 覆盖原数组while (left <= right) {arr[left] = temp[left];left++;}}
}

有一个讲排序算法挺不错的up主,可以看看:排序算法:归并排序【图解+代码】_哔哩哔哩_bilibili

相关文章:

归并排序,自顶向下

归并排序主要两步&#xff0c;一步是划分区间&#xff0c;另一步是合并两个区间 这个算法的稳定性更好&#xff0c;对比快排这种&#xff0c;如果整体是倒序的话&#xff0c;快排的复杂度会达到o(n^2)&#xff0c;归并会更稳定。 划分区间主要是递归去实现&#xff0c;下面给…...

【案例】3D地球(vue+three.js)

需要下载插件 <template><div class"demo"><div id"container" ref"content"></div></div> </template> <script> import * as THREE from three; // import mapJSON from ../map.json; import { Or…...

C语言中float byte char uint_8 转换方法

1.float转Byte[] #include <stdio.h>int main() {float floatValue 3.141592; // 浮点数值// 存储到字节数组unsigned char *byteArr (unsigned char *)&floatValue;// 打印字节数组for (int i 0; i < sizeof(float); i) {printf("Byte %d: 0x%02X\n&q…...

瑞明达:脚踏实地,为实体经济贡献“瑞明达”力量

实体经济是指以实际物质生产和经营为主要特征的经济形态&#xff0c;是经济发展的基础和主体。瑞明达团队一直关注着实体经济的发展&#xff0c;也在不断探索如何运用科技手段和管理经验助力实体经济的发展。团队将从几个方面介绍瑞明达团队的看法和实践经验。 实体经济在国家经…...

ChatGPT-自然语言处理模型

前言 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种自然语言处理模型&#xff0c;具有强大的文本生成和理解能力。 使用场景 它可以用于各种场景&#xff0c;包括但不限于&#xff1a; 1. 自动文本生成&#xff1a;GPT可以生成连贯、流畅的文章、故…...

Apache Dolphinscheduler如何不重启解决Master服务死循环

个人建议 Apache Dolphinscheduler作为一个开源的调度平台&#xff0c;目前已经更新到了3.X版本&#xff0c;4.0版本也已经呼之欲出。3.0版本作为尝鲜版本&#xff0c;新添加了许多的功能&#xff0c;同时也存在非常多的隐患&#xff0c;本人使用3.0版本作为生产调度也踩了很多…...

绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!

在数字化的时代&#xff0c;我们所接触的信息呈现指数级的增长。无论是办公资料、学习资源&#xff0c;还是各种生活中的点滴&#xff0c;所有这些信息以各种形式——文本、图片、视频、音乐等——出现在我们面前&#xff0c;如何有效地同步和管理这些内容成为一个挑战。 就跨…...

阿昌教你如何优雅的数据脱敏

阿昌教你如何优雅的数据脱敏 Hi&#xff0c;我是阿昌&#xff0c;最近有一个数据脱敏的需求&#xff0c;要求用户可自定义配置数据权限&#xff0c;并对某种类型数据进行脱敏返回给前端 一、涉及知识点 SpringMVCJava反射Java自定义注解Java枚举 二、方案选择 1、需求要求…...

力扣每日一题80:删除有序数组中的重复项||

题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...

SQL——插入已经存在的数据

现在有一套ID为9003的高难度SQL试卷&#xff0c;时长为一个半小时&#xff0c;请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info&#xff08;其表结构如下图&#xff09;&#xff0c;不管该ID试卷是否存在&#xff0c;都要插入成功&#xff0c;请尝试…...

【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧

一&#xff0c;工具资源下载 百度网盘资源下载链接地址&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…...

阿里云2核2G3M云服务器99元/年,新老同享,续费不涨价!

2023年阿里云双11活动正在火热进行中&#xff0c;推出了一款面向个人开发者、学生、小微企业的年度爆款套餐&#xff0c;2核2G3M云服务器99元/年&#xff0c;新老同享&#xff0c;续费不涨价&#xff01; 一、活动入口 活动地址&#xff1a;传送门>>> 二、活动详情 …...

UWB 技术在机器人和移动领域的应用题】

多年来&#xff0c;机器人生态系统不断增长&#xff0c;不同的应用程序也在不断增长。如今&#xff0c;机器人出现在许多不同的领域&#xff0c;例如私人家庭、商业场所、仓库和医疗场所。他们要么自主工作&#xff0c;要么与我们并肩工作&#xff0c;帮助我们完成任务。 根据…...

11.1 知识总结(JavaScript)

一、 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 EC…...

【Java 进阶篇】Java Web开发:实现验证码功能

在Web应用程序中&#xff0c;验证码&#xff08;CAPTCHA&#xff09;是一种常见的安全工具&#xff0c;用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现&#xff0c;要求用户在登录或注册时输入正确的字符。在这篇文章中&#xff0c;我们将详细介绍如何在Java Web…...

C++启动线程的方法

&#xff08;1&#xff09;函数指针 情况一&#xff1a;主线程有join&#xff0c;正常执行 #include <thread> #include <iostream>void work(int num) {while(num-- > 0) {std::cout << num << std::endl;} }int main() {std::thread t(work, 5);…...

Distilling the Knowledge in a Neural Network学习笔记

1.主要内容是什么&#xff1a; 这篇论文介绍了一种有效的知识迁移方法——蒸馏&#xff0c;可以将大型模型中的知识转移到小型模型中&#xff0c;从而提高小型模型的性能。这种方法在实际应用中具有广泛的潜力&#xff0c;并且可以应用于各种不同的任务和领域。 论文中首先介绍…...

JVM虚拟机:垃圾回收算法和垃圾回收器之间的关系

GC垃圾回收算法 在前面的课程中我们学习了GC垃圾回收算法,分别为: 引用回收算法 复制算法 标记清除算法 标记整理算法 这些垃圾回收算法是理论,有多种垃圾回收器可以实现这些理论。目前为止没有最完美的垃圾回收器,只能针对具体的情况选择最合适的垃圾回收器,进行分代收集…...

oracle sqlplus的使用 ,查询oracle实例名和服务名,查询oracle容器,切换oracle容器

Oracle的sqlplus是与oracle数据库进行交互的客户端工具&#xff08;oracle数据库自带的客户端工具&#xff09;&#xff0c;借助sqlplus可以查看、修改数据库记录。在sqlplus中&#xff0c;可以运行sql*plus命令与sql语句。 1。先使用root账户登陆系统后&#xff0c;使用su - o…...

golang工程——opentelemetry简介、架构、概念、追踪原理

opentelemetry 简介 OpenTelemetry&#xff0c;简称OTel&#xff0c;是一个与供应商无关的开源可观测性框架&#xff0c;用于检测、生成、收集和导出 遥测数据&#xff0c;如轨迹、度量、日志。OTel的目标是提供一套标准化的供应商无关SDK、API和工具&#xff0c;用于接 收、…...

26年5月系分论文~写作思路深度拆解

Hello 我是方才&#xff0c;15人研发leader、5年团队管理&架构经验。文末&#xff0c;附26年10月最新软考备考资料备考交流群&#xff0c;群友可享受每月直播哟&#xff01;2605系分论文分析今天系分和架构均已考完&#xff0c;方才先预祝所有考生均能逢考必过&#xff01;…...

Selenium WebDriver协议层原理与稳定性实战

1. 这不是“又一个Selenium教程”——它解决的是你写完第一行代码后立刻卡住的问题“Selenium WebDriver教程”这六个字&#xff0c;我过去三年在团队内部文档、外包需求评审、新人入职培训材料里见过至少278次。但几乎每次打开&#xff0c;都只看到“安装ChromeDriver”“启动…...

基于图神经网络的机器学习有限区域模型:边界处理与图结构设计实战

1. 项目概述与核心挑战最近几年&#xff0c;机器学习天气预测&#xff08;MLWP&#xff09;的进展让人有点兴奋&#xff0c;又有点眼花缭乱。从全球尺度的大模型到区域性的精细化预报&#xff0c;数据驱动的方法正在重新定义我们对大气模拟的理解。作为一名长期混迹在气象和计算…...

Von Neumann内存映射检测与MON51调试实践

1. 理解Von Neumann内存映射的基础概念在嵌入式系统开发中&#xff0c;内存架构的选择直接影响着程序的执行效率和硬件设计。Von Neumann架构与哈佛架构是两种最基本的内存组织方式&#xff0c;而MON51调试器需要明确识别目标硬件的内存映射方式才能正常工作。Von Neumann架构的…...

用Python和Nuscenes数据集,手把手教你搞懂自动驾驶的6大坐标系转换

用Python和Nuscenes数据集实战自动驾驶6大坐标系转换第一次接触自动驾驶感知系统时&#xff0c;最让人头疼的莫过于各种坐标系之间的转换关系。记得去年参与一个多传感器融合项目时&#xff0c;团队花了整整两周时间调试坐标系对齐问题——雷达检测到的行人位置总是比摄像头看到…...

MacBook新手福音:用Final Cut Pro 10.6.5搞定你的第一门视频课(附保姆级设置与导出指南)

MacBook新手福音&#xff1a;Final Cut Pro 10.6.5视频课制作全流程精解第一次打开Final Cut Pro时&#xff0c;那个布满陌生术语的界面是否让你望而却步&#xff1f;作为Mac用户专属的视频剪辑利器&#xff0c;它其实远比想象中友好。本文将带你用最直接的方式&#xff0c;从零…...

从原理到操作:彻底搞懂Linux服务器UEFI启动项管理(efibootmgr命令详解)

深入解析Linux服务器UEFI启动管理&#xff1a;efibootmgr命令全攻略当你在Linux服务器上执行efibootmgr命令时&#xff0c;是否曾被那些神秘的Boot000X条目搞得一头雾水&#xff1f;作为现代服务器的主流启动方式&#xff0c;UEFI远比传统的BIOS复杂得多。本文将带你从底层原理…...

FModel深度指南:UE5.3+ Pak解包与Nanite资源导出实战

1. 这不是“下载器”&#xff0c;而是一把解构现代游戏资产的手术刀很多人第一次听说FModel&#xff0c;是在某个游戏论坛里看到一句轻描淡写的“用FModel扒资源”。于是下载、双击、拖进exe——结果卡在“Loading Pak Files”十分钟不动&#xff0c;或者导出一堆黑屏贴图、错位…...

Codeforces Round 1058

【实况】Codeforces Round 1058 (Div. 2)&#xff08;rk3194;perf1423;solve3&#xff09; https://www.bilibili.com/video/BV1Tv4GzwE5r/ 【赛时3/7】Codeforces Round 1058(Div.2)上1000了记录一下 https://www.bilibili.com/video/BV1BC4kzMEoa/ Codeforces Round 1058 (Di…...

专业级GPU内存检测:MemTestCL的5个实战场景深度解析

专业级GPU内存检测&#xff1a;MemTestCL的5个实战场景深度解析 【免费下载链接】memtestCL OpenCL memory tester for GPUs 项目地址: https://gitcode.com/gh_mirrors/me/memtestCL MemTestCL作为斯坦福大学开发的开源OpenCL内存检测工具&#xff0c;为GPU、CPU及各类…...