首页 > 编程语言 >【算法】归并排序(递归法)

【算法】归并排序(递归法)

时间:2024-03-28 14:58:05浏览次数:39  
标签:归并 递归 步骤 内存空间 算法 序列 排序

目录

归并排序简介

归并排序(merge sort)是一种高效、通用且基于比较的排序算法。由约翰·冯·诺依曼(John von Neumann)于1945年发明,是一种分治算法(divide-and-conquer algorithm)。时间复杂度为 O ( n log ⁡ n ) O{\left(n\log n\right)} O(nlogn);空间复杂度为 O ( n ) O{\left(n\right)} O(n)。因为需要额外内存空间用于存储已归并的序列。

算法步骤(递归)

  1. 申请一个内存空间用于存储已排序序列。
  2. 将未排序序列分成两个子序列。
  3. 由步骤2产生的两个子序列继续执行步骤2,然后合并两个子序列成有序序列,并存放进已排序空间。
  4. 重复迭代步骤2和3,直到不能再分割序列。这样申请的内存空间内存储的就是已经完成排序的序列。

举例如下:

标签:归并,递归,步骤,内存空间,算法,序列,排序
From: https://blog.csdn.net/m0_59577534/article/details/137024656

相关文章

  • 【C语言】冒泡排序
    一、数组越界数组越界是在数组本有的元素个数(内存)外,打印数组时,多出的数组内存,为数组越界官方含义:数组下标变量的取值超过初识定义时的大小,导致对数组元素的访问出现在数组的范围之外,C语言常见错误之一二、冒泡排序分析代码:先看主函数创建数组并初始化创建变量sz,......
  • 原生手动排序
    原生手动排序<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>Document</......
  • 常用排序算法
    本博客将讲述常见的几种排序算法在日常码代码时,常常会用到排序,排序算法又有很多,每种排序都会有自己的特点和适用情况,我在这将总结几种排序算法,废话少说,开始!冒泡排序(bubblesort)冒泡排序,因像水泡一样一个接一个地冒出水面(排序),而得名。冒泡排序的思想是每次将最大的一次一次......
  • C语言程序练习——汉诺塔递归
    1.题目        在终端输入汉诺塔层数n,实现将n层汉诺塔通过三座塔座A、B、C进行排列2.代码#include<stdio.h>inthannuota(intlen,intstr,inttmp,intdst){if(1==len){printf("%c->%c\n",str,dst);}else{h......
  • 选择排序的练习题及答案(共三种方式实现选择排序)
    习题1班级里五个人成绩比较升序排列,成绩分别为64,75,88,92,21packagexuanze;importjava.util.*;publicclasschapter1{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerscan=newScanner(System.in); intn=scan.nextInt......
  • 冒泡排序的习题全集(含答案)
    习题11.给定一个包含红色,白色和蓝色,共n个元素的数组nums,原地对他们进行排序,使得相同颜色的元素相邻,并按照共色,白色,蓝色顺序排列。我们使用整数0,1,2分别表示红色,白色,蓝色packagemaopao;importjava.util.*;publicclasschapter1{ publicstaticvoidmain(String[]ar......
  • 八大排序——希尔排序
    希尔排序算法思想希尔排序核心思想就是:1,分组;2,直接插入排序:越有序越快希尔排序就是多次利用直接插入排序的一个排序算法.希尔排序的算法思想:间隔式分组,利用直接插入排序让组内有序,然后缩小分组再次排序,直到组数为1希尔排序的理论基础就是直接插入排序越有序越快;1......
  • 基数排序详解
    基数排序详解一、基数排序的基本概念二、基数排序的特点二、基数排序的工作过程三、基数排序的伪代码四、基数排序的C语言代码示例五、基数排序的稳定性六、基数排序的优化与变体七、基数排序的应用场景八、结论在计算机科学中,排序算法是一种非常基础和重要的算法类型......
  • 计数排序:原理、应用与性能分析
    计数排序:原理、应用与性能分析一、引言二、计数排序的基本原理三、计数排序的算法流程四、计数排序的伪代码五、计数排序的C代码示例六、计数排序的应七、计数排序的性能分析八、未来展望九、结论一、引言在计算机科学中,排序算法是一种重要的算法,它广泛应用于各种数......
  • 数据结构-排序算法(Java实现)
    1.插入排序1.1基本思想把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。1.2图解 1.3原理解析第一趟:一组数据可以分为有序序列和无序序列, i表示无序序列的第一个元素,j表示有序序列的......