二路归并排序和基数排序

基本数据结构中各种内部排序比较(时间复杂度,空间复杂度和稳定性) 基本数据结构中各种排序比较(时间复杂度,空间复杂度和稳定性) 插入排序   插入类的排序就好像是军训时来了一个迟到的同学,整个同学会“插入”到队伍的合适位置。 1.直接插入排序   每趟将一个新的关键字按照值的大小比较插入到已经有序的队伍中,直到所有的关键字都被插入有序序列。 2.折半插入排序   这里的插入方式和直接插入排序一样,区别在比较方法不一样,这里是用折半查找法来查找插入位置。与直接插入... 阅读详情

写在前面

       前面有篇文章已经写了选择类排序、交换类排序和插入类排序(传送门),下面将介绍二路归并排序和基数排序。

二路归并排序

1、执行过程

       原始序列:45 35 65 95 75 15 25
       1)将原始序列看作是7个有序的含有一个关键字的子序列
       子序列1:45
       子序列2:35
       子序列3:65
       子序列4:95
       子序列5:75
       子序列6:15
       子序列7:25
       2)两两归并,形成若干个有序的二元组
       {35,45} , {65,95} , {15,75} , {25}
       3)再将这个序列当作若干个二元组的子序列
       子序列1:35    45
       子序列2:65    95
       子序列3:15    75
       子序列4:25
       4)继续两两归并,形成若干个有序的四元组
       {35,45,65,95} , {15 ,25 ,75}
       5)最后只剩下两个子序列,再进行一次归并,就完成了整个二路归并排序,结果如下
       15    25    35    65    75    95

2、算法代码

      由执行过程可知,归并排序可以看作是一个分而治之的过程:先将整个序列分成两半,对每一半分别进行归并排序,将得到两个有序序列,然后将这两个序列合并成一个序列即可。

void mergeSort(int R[] , int low , int high){
	if(low < high){
		int mid = (low + high)/2;
		mergeSort(R,low,mid);
		mergeSort(R,mid+1,high);
		merge(R,low,mid,high);//合并算法,将两个有序的序列合并成一段有序序列
	}
}
3、性能分析

      时间复杂度O(nlogn),空间复杂度O(n)

基数排序

1、执行过程

      初始桶如下图所示:在这里插入图片描述
      原始序列:78   09   63   30   89   84   05   69   08   83
      1)进行第一趟分配和收集,按最后一位分配,如:
      78的最低位为8,放到桶8中,如下图所示:
在这里插入图片描述
      09的最低位是9,放到桶9,如下图所示:
在这里插入图片描述
      依次将原始序列的每个数放到桶中,结果如下图所示:在这里插入图片描述
      然后按照桶0到9的顺序,从桶下面收集关键字,结果为:
        30  63  83  84  05  78  08  09  89  69
      2)在第一趟排序的基础上,进行第二趟分配和收集,按照倒数第二位(本例中是第一位),结果如下图所示:
在这里插入图片描述
      然后收集,结果为:
        05  08  09  30  63  69  78  83  84  89
      现在最高位有序,最高位相同的关键字最低位有序,于是整个序列有序,基数排序结束。

3、性能分析

      时间复杂度:O(d(n+r)),空间复杂度O(r),其中,n为序列中关键字的个数,d为关键字的位数,r为关键字基的个数。

MATLAB App Designer 实现多窗口交互与数据传递实战 本文详细介绍了如何使用MATLAB App Designer实现多窗口交互与数据传递的实战技巧。从基础的多窗口应用设计到高级的动态窗口创建,涵盖了窗口调用控制、数据传递方法、状态管理及用户体验优化等核心内容,帮助开发者高效构建复杂的MATLAB GUI应用。 阅读详情

相关推荐

LTSPICE使用教程:导入第三方库模型进行仿真

LTSPICE导入第三方SPICE模型进行仿真,以英飞凌的第三方.lib模型为实例进行详解

焊武大帝的专栏 3万+

二路归并排序

当出现 i+2*len>n 时,则该趟MergePass()的子表数目为奇数,最后一个a[⌈n/len⌉ ,n-1] 无需和其他子表归并,直到若干趟MergePass()后,只剩两个子表时,将最后两个子表合并。#include <iostream> using namespace std; void Merge(int a[],int lo...

weixin_33933118的博客 172

如果使用ssms连接SQLserver的时候出现无法连接到服务器。

如果使用ssms连接SQLserver的时候出现无法连接到服务器。 Lan 2020-03-29 22:11 329 人阅读 0 条评论 标题: 连接到服务器------------------------------无法连接到...

Vastsa的博客 1万+

2-路归并排序

归并排序的含义是将两个或者两个以上的有序表组合成一个新的有序表,假初始序列含有n个记录,则课堪称是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或者1(奇数个元素时会有一个元素没有与之匹配的元素,单独成一个有序表)的有序子序列,再两两归并,如此重复,直到得到一个长度为n的有序序列为止,这种方法称为2-路归并排序。 2-路归并排序中的核心的操作是将一维数组中前后相邻...

Mr_H9527的博客 2571

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程(超长篇幅耐心阅读)

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程,主要说明jeecg积木报表的集成、jeecg积木报表嵌入若依菜单、token权限控制,以及iframe嵌入表格等内容。

weixin_53067723的博客 4641

TMP112/TMP102温度传感器驱动开发与嵌入式实战

数字温度传感器是嵌入式系统环境感知的核心器件,其通过I²C等标准总线实现高精度、低功耗测温。原理上依赖ΔΣ模数转换与二进制补码数据格式,结合寄存器配置实现模式控制、阈值报警与功耗管理。技术价值体现在±0.5°C级精度、1μA级静态电流及SOT-563超小封装带来的系统集成优势。广泛应用于工业MCU热监控、电池物联网终端、医疗电子温度补偿及汽车ECU板级测温等场景。本文围绕TMP112/TMP102展开,深入解析寄存器协议、硬件接口约束、HAL驱动分层设计、FreeRTOS任务调度及生产级校准方法,覆盖从芯片

weixin_35756690的博客 674

数据结构——二路归并排序和基数排序

二路归并排序和基数排序的算法原理及代码实现

memory_hahaha的博客 440

Keil开发中CMSIS Driver API缺失问题的排查与解决

本文详细解析Keil开发中CMSIS Driver API缺失问题的根源与解决方案。针对版本不匹配、安装不完整等常见原因,提供在线与离线安装的对比及详细排查步骤,重点涵盖版本兼容性分析与项目配置验证,帮助开发者彻底解决API缺失错误并预防问题复发。

rust6ferris的博客 550

排序算法之归并排序

归并排序算法思想,算法实现,算法分析和优化...

pp1专栏 2379

FPGA电路设计1——芯片原理图和封装制作流程

本文详细介绍了FPGA电路板设计的学习过程,以Xilinx Kintex-7系列FPGA为例。主要内容包括:1)从官网下载芯片引脚分配文件的方法;2)原理图库绘制流程,重点讲解Bank划分(配置Bank、HR/HP IO Bank、高速收发器Bank)及利用Excel预处理数据;3)使用Altium Designer的Symbol Wizard工具实现引脚自动化导入;4)原理图设计要点,包括电源系统设计(多电压需求与上电时序)、配置电路(JTAG/Flash接口)和时钟设计。

在读研究生,FPGA电路设计与功能开发。 1384

【100%通过率】华为OD机试真题 Python 实现【字符串重新排列】【2022.11 Q4新题】

给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典序排序 2、单词间顺序调整: 1)统计每个单词出现的次数,并按次数降序排列 2)次数相同,按单词长度升序排列 3)次数和单词长度均相同,按字典升序排列 请输出处理后的字符串,每个单词以一个空格分隔。

MISAYAONE的博客 7982

数据结构-归并排序与基数排序

归并的含义是将两个或者两个以上已经有序的子序列合并成一个新的有序的序列。归并排序的基本思想是分治法,也就是先让子序列有序,再将子序列合并成有序的序列,类似二叉树的后序遍历。假设待排序的元素有n个,可以将这n个元素视为n个长度为一的子序列,然后两两归并,得到n/2个有序子序列。之后继续两两归并直到合并成长度为n的有序序列为止;上述这种两两归并的方法叫做二路归并排序。...

m0_61433144的博客 1348

OPTEE常见13类问题与解答

OPTEE常见13类问题并解答

AI-安全-功耗 1204

数据结构—排序(Part Ⅲ)—归并排序&基数排序

数据结构-排序(第十章)的整理笔记,若有错误,欢迎指正。 归并排序和基数排序

Miss Z的博客 1021

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

归并排序和基数排序

二路归并排序 将待排序列分为左右两个子序列, 分别递归进行排序。 void mergesort(elemtype A[], int low, int high) { if(low<high) { int mid=(low+high)/2; mergesort(A[],low,mid-1); mergesort(A[],mid+1,high); merge(A[],low,...

小菜比的博客 270

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

算法整理:内排序篇-二路归并排序&线性时间排序

本文主要介绍了二路归并排序和一些线性时间排序(计数排序、基数排序和桶排序)。

ReDreamme的博客 1870

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数据结构 - 排序(三):归并与基数排序详解

例如,对于数组 [3, 1, 4, 2],首先分成 [3, 1] 和 [4, 2],然后分别对这两个子序列继续细分,得到 [3] [1] [4] [2],接着合并 [3] 和 [1] 得到 [1, 3],合并 [4] 和 [2] 得到 [2, 4],最后合并 [1, 3] 和 [2, 4] 得到 [1, 2, 3, 4]。例如,对于一组三位数的整数,先按照个位数字进行排序,然后按照十位数字排序,最后按照百位数字排序,经过这样的三轮排序后,整个序列就被排好序了。二路归并排序基于分治策略。都需要使用外部排序。

weixin_69477306的博客 882

26考研——排序_归并排序、基数排序和计数排序(8)

26考研408数据结构——排序,持续更新ing

主攻整理408、专升本资料~ 1048

25版王道数据结构课后习题详细分析 第八章 8.5 归并排序、基数排序和计数排序

第一趟:87,503,61,512,170,908,275,897,462,653(长度为2)第二趟:61,87,503,512,170,275,897,908,462,653(长度为4)第三趟:61,87,170,275,503,512,897,908,462,653(长度为8)第四趟:61,87,170,275,462,503,512,653,897,908(长度为10)解析:第一趟归并后{1,2},{4,63},{3,5},{7,8},共比较4次;

2406_86301373的博客 1431

数据结构----C语言八种排序算法(冒泡排序,选择排序,直接插入排序,希尔排序,快速排序,堆排序,二路归并排序,基数排序)

一、冒泡排序 思路:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两记录交换,然后比较第二个记录和第三个记录的关键字,依次类推,直到第n-1个记录和第n个记录的关键字比较完毕为止。此过程为第一趟冒泡排序,结果使得最大的关键字被放置到最后一个记录的位置上。                                                          ...

Tiantian的博客 3117

内部排序(二路归并、基数、计数)

对二路归并排序、基数排序和计数排序这些内部排序进行归纳总结,并详细记录了它们的算法思想和性能分析,以便快速查阅。

kusunoki的博客 2330

每种排序算法趟的特点

更新时间:2021年8月15日14:57:50 B站:Anthony_4926的个人空间_哔哩哔哩_Bilibili 注:默认升序排列,小根堆

Anthony_4926 1097

归并排序:二路归并&&基数排序

将一个具有n个待排序记录的序列看成是n个长度为1的有序序列,然后进行两两归并,得到n/2个长度为2的有序序列,再进行两两归并,得到n/4个长度为4的有序序列,……,直至得到一个长度为n的有序序列为止。 ...

weixin_52963585的博客 633

【数据结构】排序算法总结

每趟将一个待排序的关键字按照其值的大小插入到已经排好的部分有序序列的适当位置上,直到所有待排关键字都被插入到有序序列中为止。:最坏情况为O(n²) 最好情况为O(n) 平均情况为O(n²):O(1)

ypk014110的博客 944

数据结构与算法(8)--排序算法

.1 基本概念 6.2 冒泡排序 6.3 快速排序 6.4 直接 选择排序 6 6.5 堆排序 6.6 (直接) 插入排序 6 6.7 希尔排序 6.8 (二路)归并排序 6.9 基数排序 本章将重点介绍多种排序算法 1.首先是概念 2.冒泡排序 3.快速排序,一次移动多个位置的距离 4.直接选择排序 5.堆排序 7.希尔排序 8.二路归并排序 9.基...

王不留行嘿呦嘿 217

数据结构八大排序(直接插入排序*希尔排序*冒泡排序*二路归并*简单选择排序*堆排序*基数排序*快速排序)

数据结构八大排序及代码实现 直接插入排序 定义:直接插入排序(Straight Insertion Sort)的基本操作是将-一个记录插入到已经排好序的有序表中,从而得到-一个新的、记录数增1的有序表。 举例: 时间复杂度O(n^2) 空间复杂度O(1) 稳定的 void InsertSort(int arr[], int len)//待排序数组和待排序数组长度 { assert(arr != NULL); if (arr == NULL) { return; } int count = 0;

weixin_48560325的博客 489
上一篇: react build后页面空白,报错
下一篇: 详细论述最短路径(迪杰斯特拉算法和弗洛依德算法)
Two_Bits
博客等级 码龄8年 25粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值