C语言程序设计--算法与数据结构之相邻两个有序子序列的归并

排序算法——归并 递归实现: #include<iostream> using namespace std; void printArr(int *arr, int length) //打印数组 { for (int i = 0; i < length; i++) { cout << arr[i] << " "; } cout << e... 阅读详情

此代码可以正常运行,下附有运行区

//算法8.10 相邻两个有序子序列的归并
#include <stdio.h>
#include<stdlib.h>
#define  MAXSIZE  20          						//顺序表的最大长度
typedef struct
{
	int key;
	char *otherinfo;
}RedType;
																		
void Create_Sq(RedType *R)
{
	int i,n;
	printf("请输入数据个数,不超过%d个\n",MAXSIZE);
	scanf("%d",&n);										//输入个数
	printf("请输入待合并的数据:\n");
	while(n>MAXSIZE)
	{
		printf("个数超过上限,不能超过%d个,请重新输入\n",MAXSIZE);
		scanf("%d",&n);
	}
	for(i=0;i<n;i++)
		scanf("%d",&R[i].key);
}

void Merge(RedType R[],RedType T[],int low,int mid,int high)
{ 
   //将有序表R[low..mid]和R[mid+1..high]归并为有序表T[low..high] 
	int i,j,k;
	i=low; j=mid+1;k=low; 
    while(i<=mid&&j<=high)
	{                 	
		//将R中记录由小到大地并入T中 
		if(R[i].key<=R[j].key) T[k++]=R[i++]; 
        else T[k++]=R[j++]; 
	} 
	while(i<=mid)                            		//将剩余的R[low..mid]复制到T中 
		T[k++]=R[i++];                 
	while(j<=high)                           		//将剩余的R[j.high]复制到T中 
		T[k++]=R[j++];                       
}//Merge 
void show(RedType *T,int low,int high)
{
	int i;
	for(i=low;i<=high;i++)
		printf("%d ",T[i].key);
	printf("\n");
}
void main()
{
	RedType *R=new RedType[MAXSIZE];
	RedType *T=new RedType[MAXSIZE];
	Create_Sq(R);
	int low,mid,high;
	printf("请输入第一个有序子序列的起点、终点下标和第二个有序子序列的终点下标:\n");
	scanf("%d %d %d",&low,&mid,&high);
	Merge(R,T,low,mid,high);
	printf("合并后的结果为:\n");
	show(T,low,high);
}

在这里插入图片描述

C语言数据结构源代码包及应用详解 本文还有配套的精品资源,点击获取 简介:数据结构是计算机科学的基础,涉及数据的组织与管理,C语言实现能够加深理解并提供编程基础。本源代码包涵盖了数组、链表、栈、队列、树、图、散列表、堆、排序与查找、递归与回溯等多种数据结构的C语言实现。每个结构都有示例和详尽解释,帮助学习者理解工作原理和有效实现方法,增强编程和算法能力。 1. 数据结构的C语言实现概述 数据... 阅读详情

相关推荐

ACM程序设计试题与解答全集

ACM国际大学生程序设计竞赛(ACM-ICPC)起源于1970年,最初由国际计算机学会(ACM)举办,如今已成为世界上规模最大的大学级别计算机竞赛。它不仅是对编程能力的挑战,更是对团队协作、时间管理与问题解决能力的全面考验。随着时间的演进,ACM-ICPC已成为全球顶尖计算机学院和软件工程领域人才展示自身能力的舞台。算法是解决特定问题的一系列定义明确的计算步骤,可以由自然语言、伪代码或计算机编程语言实现。算法具有五个基本特性:输入、输出、确定性、有限性和有效性。输入。

weixin_42143092的博客 1010

【归并排序】

归并排序就是将两个或两个以上的有序表合并成一个有序表的过程。将两个有序表合并成一个有序表的过程称 为2-路归并。 归并排序算法的思想是: 假设初始序列含有n个记录,则可看成n个有序的子序列,每个字序列的长度为1,然后两两归并,得到[n/2]个长度为2或1的有序子序列;再两两归并,...,如此重复,直到一个长度为n的有序序列为止。 例 已知待排序记录的关键字序列为{49,38,65,97,7

编程小霸王的Blog 816

C语言 归并排序

c语言 归并排序算法,相邻两个有序子序列的归并。

【数据结构】归并排序

一、归并排序 归并排序是建立在归并上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。该算法的核心思想是二路归并。 二、归并排序的介绍 <1>归并排序的过程: (1)根据数组的mid值(数组的起始下标加数组的末尾下标除以二)将序列划分为2个子序列,多次向下递归,直到划分为一个子序列只包含一个数...

QX_a11的博客 322

模型参考自适应控制(MRAC):让PID参数动态优化

本文深入解析模型参考自适应控制(MRAC)技术,它通过实时调整PID参数,使控制系统能自动适应系统特性变化和外部干扰。文章详细介绍了MRAC的工作原理、数学基础,并提供了用C语言实现的实战代码示例,帮助工程师解决传统PID控制在非线性、时变系统中参数整定繁琐的难题。

tequila的博客 902

用电脑通过网口控制keysight示波器

Keysight HD304MSO示波器提供1GHz带宽、14位高精度ADC及10.1英寸触控屏,支持50μV低噪声信号捕获和1.3M波形/秒刷新率。配备4通道探头、逻辑分析仪接口及100Mpts存储深度,含故障诊断、FFT等高级功能。通过网线连接电脑安装TightVNC软件(示波器IP为169.254.163.24)可实现远程控制,相比U盘传输更高效。(149字)

johnboat的专栏 1135

Ultra-QuickSort POJ - 2299 归并排序

问题: In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is so...

HXX904的博客 280

macOS向日葵闪退终极修复:权限设置与后台运行全解析

本文详细解析了macOS上向日葵远程控制软件闪退问题的根源与解决方案,重点介绍了权限设置与后台运行的优化方法。通过配置屏幕录制、辅助功能等关键权限,以及优化后台进程管理,有效解决闪退问题,提升远程控制软件的稳定性与使用体验。

fern8的博客 1757

归并排序(递归和非递归)

归并排序主要讲二路归并排序二路归并排序的基本思想:     设数组a中存放了n个数据元素,初始时把他们看成是n个长度为1的有序子数组,然后从第一个子数组开始,把相邻的子数组进行两两合并,的到n/2的整数上界个长度为2的新的有序子数组(当n为奇数时最后一个新的有序子数组的长度为1);对这些新的有序子数组在两两归并;如此重复,直到得到一个长度为n的有序数组为止。归并排序的过程图:归并排序的完整代码(非...

lingling_nice的博客 384

Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)

需求说明:Verilog设计基础 内容       :testbench的设计 读取文件 写入文件 来自       :时间的诗 十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应。 端口分为 input,output 和 inout 类型产生激励信号的时候, input  对

时间的诗 5万+

在MCUXpresso上通过J-link烧写KW45

背景: KW45B是nxp 的ble npi产品,其使用的IDE为MCUXpressso或者IAR,MCUXpressso有一些bug,但是由于MCUXpressso阅读查找代码相对IAR容易,所以我经常使用的MCUXpressso进行开发。当然IAR也有其优势,比如编译、烧写速度相对MCUXpressso更快,是比较通用的一个平台,而MCUXpressso是NXP独有的。 Kw45有两种烧写方式,一是使用MCUlink,二是使用Jlink。NXP ble 产品线提供的IDE资料里有最新的15.0版本的

weixin_41889258的博客 2859

数据结构PTA7.1.2 插入排序还是归并排序?(两种解法)

目录1. 题目背景输入格式输出格式输入样例 1:输出样例 1:输入样例 2:输出样例 2:2. 解法一 1. 题目 背景 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。 现给定原始序列和由某排序算法产生的中间序列,请你判

Echooo的博客 5793

【技术笔记】Cadence实现Orcad与Allegro软件交互式布局设置

为了达到原理图和PCB两两交互的功能,需要在ORCAD中将允许交互进行勾选,这样才可以,执行菜单命令Options-Preference后,我们打开参数界面,进行选择Miscellaneous菜单,将交互模式进行勾选。在做硬件pcb设计的时候,原理图选中一个元器件,希望可以再PCB中可以直接选中。对于网表必须是导入第一方网表,第三方是无效的。在allegro中使能/关闭交互式布局功能。

weixin_50499137的博客 2077

插入与归并

1035. 插入与归并(25) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成N个只包含1个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下1个有序的序列。 现给定原始序列和由某排序算法

不忘初心 758

UNet改进(54):当医学图像分割遇上频域学习与自监督

本文提出了一种改进U-Net的方法,通过频域增强模块和代理任务模块提升医学图像分割性能。频域增强模块在傅里叶空间对特征图进行可学习的频率调制,重点增强高频细节特征;代理任务模块通过图像重建约束编码器保留关键信息。两个模块协同工作,在仅增加5%参数量的情况下,形成空间域、频域和重建约束三条互补的信息路径。该方法特别适用于需要精细边缘分割的医学图像任务,预期能提升5%-10%的边缘分割精度,在小样本场景效果更显著。部署时可移除代理任务模块,不影响推理效率。未来可探索空间自适应频域调制和更丰富的代理任务设计。

2501_91516851的博客 225

ESP32-S3模组上兼容SCCB总线与I2C总线的解决方案(1)

ESP32-S3模组上兼容SCCB总线与I2C总线的解决方案(1)

phmatthaus的专栏 775

PAT --- 1035 插入与归并 (25 分)

1035 插入与归并 (25 分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。 现给定原始序列和由某排序...

MissXy_的博客 617

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

1035 插入与归并 (25 分)

根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。 现给定原始序列和由某排序算法产生的中间序列,请你判断该...

weixin_30693683的博客 108

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

1035 插入与归并 Python实现

1035 插入与归并(25 分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。 现给定原始序列和由...

BTboay 1605

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PAT.Basic.Level.1035.插入与归并

### Programing Ability Test ### 浙江大学计算机程序设计能力考试(Programming Ability Test,简称PAT)是由浙江大学计算机科学与技术学院发起并组织的统一考试,旨在展现考生分析问题、解决问题和计算机程序设计的能力,科学评价计算机程序设计人才,并为企业选拔人才提供参考标准。 本文分享博主在PAT网站练习时提交的代码,供大家讨论,指出弊病,共

A.Z.L的博客 761

1035. 插入与归并(25)

1035. 插入与归并(25

Annie_qu的博客 250

神的规范:排序算法(五):归并排序

写在前面: 排序又称为分类,它是数据处理中经常用到的一种重要运算。 虽然并未列入世界最伟大的几大算法之一,但毫无疑问,在各行各业的各个时期排序都是作为奠基者般的存在为程序所调用,也为编程者所敬仰。只是,也许正是因为它与我们息息相关,以至于我们竟然时常忽略它的存在。 事实上我们生活中无时无刻不在做排序:考试成绩排名,按身高、年龄、能力高低去评判他人,划分任务处理的优先级,等等·······

Meditator_hkx的博客 922
上一篇: C语言程序设计--算法与数据结构之 简单选择排序
下一篇: C语言程序设计--算法与数据结构 之 筛选法调整堆
幻夜- D
博客等级 码龄7年 196粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值