排序算法之归并排序

C++排序算法:归并排序详解 阅读详情
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++;
            }
        }
    }

}
数据结构:排序的运用 一、 实验目的: 1、 掌握直接插入排序、折半插入排序、冒泡排序、快速排序和归并排序等排序算 法的思想。 2、 实现直接插入排序、折半插入排序、冒泡排序、快速排序和归并排序等排序算 法的编程应用。 二、 问题描述 实现数据的折半插入排序、冒泡排序、快速排序和二路归并排序。 输入实例: 请输入待排序数据数目: 3 请输入待排序数据: 23,6,45 输出示例: 折半插入排序: 比较次数 移动元素次数 排序结果 6,23,45。 立即下载

相关推荐

从零构建:如何在VSCode中为HBuilderX迁移的UniApp项目搭建TypeScript支持环境

本文详细指导如何将HBuilderX中的UniApp项目迁移至VSCode并搭建TypeScript支持环境。通过pnpm包管理器初始化项目、配置tsconfig.json和vite.config.ts文件,实现工程化迁移与TypeScript深度集成,提升开发效率和代码质量。

book8的博客 1051

归并排序

/** * @Description 归并排序 * 递归排序就是在逻辑上将一个数组分成两个数组,再将两个数组再各自拆分成两个数组, * 以此类推,然后再进行排序 * @auther Eleven * @create 2020-04-05 14:02 **/ public class MergeSort { public static void main(String[] ar...

CoderJu的博客 252

Python爬虫:无账号无限制获取企查查信息

无限制企查查爬虫 ​通过网上爬虫获取了全国所有企业,然后就需要补充企业信息,首先想到的就是企查查,启信宝等专业网站,最终选择了企查查,尝试了多种方法: 1、selenium爬虫,绕过企查查的登录验证,但账号和IP限制太大,最终放弃 2、通过requests直接请求+cookies,遇到了cookie有效期和限制问题 不断的尝试和修改参数,最终发现一种有效方式selenium+ wep 只需要IP代理,不需要账号,没有限制,因为是没有登录,拿到的信息有限,能展示的都能获取。 一、初始化..

攻城狮的家园 1万+

头歌 归并排序

【代码】头哥 归并排序。

lmq886的博客 1733

手把手教你用NetToPLCsim搭建西门子S7-1200仿真环境(附避坑指南)

本文详细指导如何利用NetToPLCsim与PLCSIM搭建西门子S7-1200仿真环境,实现无硬件条件下的PLC程序测试与上位机通信开发。内容涵盖软件选型、环境部署、关键参数配置及通信测试,并重点提供了连接失败、数据读写错误等常见问题的深度避坑指南,帮助工程师高效构建可靠的虚拟调试工作流。

a3b4c5的博客 615

学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做?

学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做?

Medlar_CN的博客 9518

头歌作业之排序1、2、3、4

为了完成本关任务,你需要掌握:链表的相关操作和掌握选择排序算法。为了完成本关任务,你需要掌握:直接插入排序的算法思想。为了完成本关任务,你需要掌握:折半插入排序算法。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写一个能实现希尔排序算法的函数。本关任务:编写函数实现折半插入排序算法。3 9 5 8 7 (数字序列)

weixin_62075168的博客 1万+

BurpSuite工具HaE插件好用正则收集

数据集合面板里面直接查询捕获到的相关数据内容,省去一个个翻找数据包内容的烦恼。插件捕获到匹配正则表达式的数据包后,可以在。可以对正则条目进行添加、编辑、删除。规则信息管理,我们点击。

墨痕诉清风的博客 655

头歌数据结构实训参考---十大经典排序算法

【代码】头歌数据结构实训参考---十大经典排序算法。

m0_73938966的博客 4913

七天征服AutoSAR/SomeIP_04理解SoAD_LdCom_SD模块

本文深入解析了AUTOSAR平台下SOME/IP协议栈的架构设计与模块交互逻辑。重点剖析了SD模块(服务发现)和LdCom模块(通信适配层)与SoAD(Socket适配层)之间的复杂关联关系。文章通过详细配置表格和代码示例,阐述了服务注册发现机制、PDU路由控制策略、数据收发流程等核心功能,并形象地将三模块关系类比为"三极管结构"。特别强调了SD模块通过RoutingGroup实现通信路径的动态开关控制,以及LdCom模块在协议栈中的透传转发作用,帮助开发者理解配置规则背后的底层原理,提

大叔带刺的博客 201

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支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 593

【排序算法】—— 归并排序

合并的具体思路:定义三个指针分别指向第一、二个序列和临时序列的第一个元素,然后对指针指向的元素进行比较,将较小的那一个元素添加到临时序列中,随即将对应的指针往后移动一位,直到指向第一个序列或第二个序列的指针走完,因为两个序列都是有序的,所以此时将没有走完的指针所指向的位置的后面所有元素都放入临时序列中即可。因此,我们的问题就得以解决了,第一步就是。来判断此时序列中元素的个数和该子序列在整个序列中的具体位置,然后不断将其从中间进行分割,直到只有一个元素,此时退出递归,回到上一层,进行合并即可。

2302_80243065的博客 2041

华为OD机试真题 新系统【进制转换后自定义排序】

华为OD机试 新系统真题【进制转换后自定义排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【进制转换后自定义排序】多语言题解。

qq_45776114的博客 597

【十大排序算法】归并排序

归并排序,如同秋日落叶,分散而细碎, 然而风吹叶动,自然而有序, 彼此相遇,轻轻合拢, 最终成就,秩序之谧。

DC1020的博客 1175

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

排序算法之归并排序分析

归并排序 排序思想: 归并排序使用的就是分治思想,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。 这种将大问题分解成小问题的思想与递归很像,分治和递归的区别就是:分治是一种解决问题的处理思想,递归是一种编程技巧 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 归并排序...

qq_42006733的博客 1938

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【排序算法】 ——— 归并排序总结

文章目录

Lebron 858

排序算法——归并排序

排序算法——归并排序 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 例如一组数组{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},第一趟数组完

程序员之道 296

十大排序算法之归并排序

一、算法简介 归并排序(Merge sort)是建立在归并操作上的一种稳定、有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 实现方法分为 自上而下的递归 自下而上的迭代 二、原理 1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再...

一只小白的博客 1046

排序算法之 - 归并排序

归并排序也有类似于快速排序的 切割 的过程,但是快速排序会选择基准值,而归并排序则直接将列表 尽可能两等分(若长度为奇数,那么有一侧会少一个元素,左侧还是右侧是无妨的)。当分割到左右两侧都只剩下一个元素的时候,分割完成,开始往上层拼接结果。拼接的大致流程是:取左右两侧队首的元素,比较两者大小,较小的先进入已排序列表。重复执行此流程,直至有一侧为空,将另一侧剩余元素直接合并到已排序列表的右侧。鬼归...

我希望,快乐,在我走过的地方绽放。。。。 8505

归并排序比较次数_排序算法

排序指的是将一组对象按照某种逻辑重新排列的过程,在计算机早期,大约30%的时间都用在排序上,今天这个比例降低了,这得益于高效的排序算法。排序有大量的应用场景,它往往是解决问题的第一步,它很基础但很重要,比如快速排序就被誉为20世纪科学和工程领域10大算法之一。排序如此有用的一个重要原因是在一个有序数组中查找一个元素比在一个无序数组中查找要简单的多。今天我们就来研究一下。本文从排序的经典算法开始分析...

weixin_39959349的博客 4483
上一篇: 记一次JDK1.8HashMap resize()方法线程不安全验证
下一篇: float类型的存储形式
coder_no
博客等级 码龄9年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值