归并排序-八大排序(六)

八大排序之插入排序和归并排序 直接插入排序的特性总结:1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:O(N^2)3. 空间复杂度:O(1),它是一种稳定的排序算法4. 稳定性:稳定。 阅读详情

思路

1.将序列中待排序数字分为若干组,每个数字为一组
2.将若干组两两合并,保证合并后的组是有序的
3.重复第二步的操作直到只剩下一组,排序完成

先写一个合并的方法


## //合并的方法

    public static void merge(int []arr,int l,int m,int r ){
        int left_size=m-l;
        int right_size=r-m+1;
        int left[]=new int[left_size];
        int right[]=new int[right_size];
        int i,j,k;
        for ( i = l; i < m; i++) {
            left[i-l]=arr[i];
        }
        for ( j = m; j <=r ; j++) {
            right[j-m]=arr[j];
        }
        i=0;j=0;k=l;//i指左边的下标索引,j指右边的下标索引,k指arr的那个下标
        while(i<left_size&&j<right_size){
            if (left[i]<right[j]){
                arr[k]=left[i];
                i++;
                k++;
            }
            else{
                arr[k]=right[j];
                j++;
                k++;
            }
        }
        while (i<left_size){
            arr[k]=left[i];
            i++;
            k++;
        }
        while (j<right_size){
            arr[k]=right[j];
            j++;
            k++;
        }
    }

再写一个分治的方法

    //分治
    public static void mergeSort(int arr[],int l,int r){
        if (l==r){
            return;
        }else{
            int  m=(l+r)/2;
            mergeSort(arr,l,m);
            mergeSort(arr,m+1,r);
            merge(arr,l,m+1,r);
        }

    }

最后测试

  public static void main(String[] args) {
    int arr[]={2,1,4,5,6,7,4,0};
    mergeSort(arr,0,7);
    System.out.println(Arrays.toString(arr));
    }

结果如下

在这里插入图片描述

边缘设备选型指南:从数据采集到AI推理,工业物联网硬件如何匹配你的需求? 本文提供了一份全面的工业物联网边缘设备选型指南,系统性地阐述了如何根据数据采集、协议兼容性、边缘AI推理算力及环境适应性等核心需求匹配硬件。文章深入剖析了从CPU/GPU/NPU选择到MQTT、Sparkplug B等工业协议支持的实战考量,并强调了软件生态与全生命周期成本的重要性,旨在帮助项目负责人在复杂场景中做出明智决策。 阅读详情

相关推荐

保姆级教程:用MATLAB搞定运动模糊图片修复(附完整代码与避坑指南)

本文提供了一份详细的MATLAB运动模糊图片修复教程,涵盖盲复原、图像复原等核心技术。通过傅里叶变换和Radon变换分析模糊参数,对比逆滤波、维纳滤波和Lucy-Richardson算法效果,并附完整代码与避坑指南,帮助用户实现专业级图像处理。

weixin_26765363的博客 230

八大排序-归并排序(六)

八大排序-归并排序(六) 归并排序原理:就是利用归你并的思想实现的排序方法,假设初始序列有N个记录,则可以看成是N个有序的子序列,每个子序列的长度为1,然后两两归并,得到N/2个长度为2或为1的有序子序列,再两两归并…,如此重复,直至得到一个长度为N的有序序列为止,这种排序方法成为2路归并排序。 先写出归并 /归并排序 public class ArraySort { public static void main(String[] args) { //我们先给一个左右

Xun_independent的博客 192

PLC编程标准之争:IEC61131与IEC61499核心区别与选型指南

在工业自动化领域,PLC编程长期依赖IEC61131标准,它定义了梯形图、结构化文本等语言,通过周期扫描机制保证确定性执行。然而,随着工业4.0和分布式控制场景的兴起,IEC61499以事件驱动模型打破传统范式,让功能块能跨设备协同,实现更灵活的柔性产线和模块化系统。理解两者在程序结构、数据交互、部署方式和实时性上的差异,是选型与工程落地的关键。本文从基础概念出发,剖析执行模型与架构演进,结合一线调试经验,帮助工程师在传统PLC与下一代标准之间做出理性决策。

weixin_27014595的博客 270

Python八大排序(六)——归并排序

代码如下: #6.归并排序 #思想:将N个长度为1的键值,成对合并成N/2个长度为2的键值组 #将N/2 2 N/4 4 #... #直到合并为1组长度为N的键值组为止 def Merge_sort(num_list): if len(num_list) <= 1: return num_list...

even160941的博客 214

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6604

手把手教你编写I2C读写EEPROM代码(驱动层实现)

从底层寄存器配置到时序控制,详解如何编写可移植的I2C读写EEPROM代码,覆盖起始信号、地址帧、数据收发及ACK应答等关键环节,确保在STM32、ESP32等主流平台稳定运行,真正落地i2c读写eeprom代码需求。

weixin_35756130的博客 508

详解八大排序(六)------(三路划分,自省排序,归并排序外排序)

外排序(External Sorting)是指能处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是⼀种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到⼀个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。然后在归并阶段将这些临时文件组合为⼀个大的有序文件,也即排序结果。

2302_80836956的博客 1492

LSTM 深度解析从原理推演到现代序列建模的演进

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的递归神经网络(RNN),它通过引入记忆单元(Cell State)来解决普通RNN在长序列数据处理中的梯度消失问题。LSTM可以在长时间的序列中捕捉依赖关系,是一种非常适合处理时间序列、自然语言处理、语音识别等任务的深度学习模型。在LSTM中,记忆单元(Cell State)是一个贯穿整个序列的数据通道,用于存储和传递关键信息。记忆单元在LSTM的时间步之间保持信息的持久性,可以看作是一个长期记忆的“容器”。

hello.reader 3万+

八大排序算法的python实现(六)归并排序

代码: #coding:utf-8 #author:徐卜灵 def merge(left,right): i,j = 0,0 result = [] while i < len(left) and j < len(right): if left[i] <= right[j]: resul...

weixin_30315435的博客 105

PyTorch深度学习实战(7)——批大小对神经网络训练的影响

在神经网络中,批( batch )是指一次输入网络进行训练或推断的一组样本。批处理( batch processing )是指将这一组样本同时输入网络进行计算的操作。本节中首先介绍批( Batch )的基本概念,并且介绍批大小在神经网络训练过程中的影响。

盼小辉丶的博客 1万+

UG NX二次开发(C#)-VS2022配置NX二次开发模板不能正常显示的问题

随着VS2022的发布,使用VS2022进行UG NX二次开发的人员也会越来越多,但是由于VS2022和以前的VS版本采用代码结构不同,而UG NX的二次开发编程模板还没有适应于VS2022的模板配置,所以不能正常的创建一个完整的工程。本文采用曲线救国的方式来实现VS2022下的UG NX二次开发。如果有读者能很好的解决模板配置,不吝赐教。

GimiGimmy 4277

DS初阶:八大排序之归并排序、计数排序

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。

weixin_51142926的博客 5679

一分钟理解 “熔断“, “限流“ 与 “降级“

熔断,本质是一种“故障隔离”机制,用于当某个依赖服务出现持续故障(如响应超时、错误率飙升)时,暂时切断对该服务的调用,避免故障扩散到整个系统,防止“雪崩效应”;待依赖服务恢复正常后,再逐步恢复调用。其核心逻辑参考了现实中的“电路保险丝”——电路过载时,保险丝熔断,切断电路,保护电器不被烧毁;故障排除后,更换保险丝,电路恢复正常。闭合状态(Closed):正常状态,请求可以正常调用依赖服务,同时监控调用的错误率、超时率等指标。打开状态(Open)

h a 6 6 6 c k 为 你解决复杂难题! 1486

【数据结构】八大排序

八大排序

2203_76003626的博客 3483

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【八大排序(十)】八大排序效率与稳定性分析

八大排序效率以及稳定性分析详解,内附八大排序全部代码,以及图文讲解,看完就会的细!

杭电码农-NEO的博客 3054

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【八大排序(七)】归并排序初级篇-递归版

归并排序递归版本C语言实现详解,内附代码以及图文讲解.看完就能学会得细!

杭电码农-NEO的博客 2588

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

《数据结构初阶》【八大排序——群英荟萃】

博客内容主要划分为:八大排序算法的介绍+八大排序算法的实现。全篇共计1.5w字,涉及的排序算法有:直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序和计数排序。(博主力推,内容绝对详实!!!)

序属秋秋秋的博客 2401

【八大排序(八)】归并排序高阶篇-非递归版

归并排序非递归版本详解,内附完整代码以及图文分析.听完就学会的细!

杭电码农-NEO的博客 2226

八大排序之归并排序(建议与快排一起看)

归并排序 排序原理: 尽可能的将一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。 将相邻的两个子组进行合并成一个有序的大组; 不断的重复步骤2,直到最终只有一个组为止。 对最后合并细化分析,核心代码Merge Java代码 import java.util.Arrays; public class MergeSort { private static int[] arr; public static void sort(int[]

RwTo的博客 3382

《数据结构初阶》【八大排序——巅峰决战】

博客内容主要划分为:八大排序算法的排序竞赛+八大排序算法的性能分析。全篇共计1.4w多字,涉及的排序算法有:直接插入排 序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序和计数排序。(博主力推,内容绝对详...

序属秋秋秋的博客 2387

八大排序:Java实现八大排序及算法复杂度分析

目录 QUESTION:八大排序:Java实现八大排序及算法复杂度分析 ANSWER: 一:冒泡排序 1.算法分析 2.时间复杂度分析 3.代码 二:选择排序 1.算法分析 2.时间复杂度分析 3.代码 三:插入排序 1.算法分析 2.时间复杂度分析 3.代码 四:归并排序 1.算法分析 2.时间复杂度分析 3.代码 五:堆排序 1.算法分析 2.时...

岁月求索 1209

八大排序算法 —— 归并排序

归并排序 归并算法的理解比较难,是一种区别于插入算法,选择算法和交换算法的一种独特算法,需要逐步理解。 核心思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之)。 图解(网...

C先生的博客 1万+

八大排序总结篇

一、前言到这里,数据结构的八大排序就算是全部写完了。这一期总结篇我们来测试一下八大排序的效率,印证一下八大排序的时间复杂度,以及深度剖析一下八大排序的稳定性问题。二、八大排序。

须知少日拏云志,曾许人间第一流。 2057

js实现八大排序

本文使用js实现数据结构中的八大排序算法:直接插入排序、shell排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、基数排序,并对比这八种排序算法的时间、空间复杂度以及稳定性,给出我们选择排序算法的主要依据。

YongxiaWu的博客 4843

八大排序——归并排序

算法:归并排序。时间复杂度:O(n log n),其中n是数组的长度。空间复杂度:O(n),需要额外的临时数组来存储合并结果。优点:稳定排序,时间复杂度较低,适合大规模数据。缺点:需要额外的空间。

秃头之旅 844

八大排序之归并排序C++详解

八大排序之归并排序C++详解题目链接思路分析解题代码 题目链接 这道题目链接是用来测试我们所写算法的正确性 排序数组 思路分析 我们想利用这道题目来讲解归并排序,首先我们来看一下归并排序的定义 归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。 基本思想 归并排序是用分治思想,分治模式在每一层递归上

qq_36711295的博客 1595
上一篇: 快速排序-八大排序(五)
下一篇: 基数排序-八大排序(七)
来来爱编程
博客等级 码龄7年 375粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值