2010年408 将一维数组R中保存的序列循环左移p个位置

顺序表之循环左移(王道顺序表第10题) 【2010年统考真题】设将n(n>1)个整数放到一维数组R中。设计一个在时间和空间复杂度两方面都尽可能高效的算法。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1,Xn-1)变换为(Xp,Xp+1,...,Xn-1,X1,...,Xp-1)。请输入5个你要放入顺序表的元素:1 2 3 4 5。顺序表里的元素有:1 2 3 4 5。顺序表里的元素有:3 4 5 1 2。请输入你要创建的顺序表的长度:5。请输出你想平移的格子数:2。 阅读详情

1基本思想:

这个问题可以视为数组ab转换成数组ba(a代表数组的前p个元素,b代表数组中余下的n-p个元素),先将a逆置得到a的逆置b,在将b逆置得到a的逆置b的逆置,最后将整个 a的逆置b的逆置 逆置得到 ba。即:
Reverse(0,p-1)
Reverse(p,n-1)
Reverse(0,n-1)

2 代码

#include<stdio.h>
#include<string.h>
# define N 50
int main()
{
	void reverse(int R[],int l,int r);
	void RCR(int R[],int n,int p);
	int i;
	int R[N],p,n;
    printf("一共有n个数,n=");
	scanf("%d",&n);
	printf("后p个数左移循环,p=");
	scanf("%d",&p);
	for(i=0;i<=n-1;++i)
		scanf("%d",&R[i]);
	RCR(R,n,p);
	for(i=0;i<=n-1;++i)
		printf("%d ",R[i]);
	printf("\n");
	return 0;
}
 
void reverse(int R[],int l,int r)
{
	int i,j;
	int temp;
	for(i=l,j=r;i<j;++i,--j)
	{
		temp=R[i];
		R[i]=R[j];
		R[j]=temp;
	}
}
 
void RCR(int R[],int n,int p)
{
	if(p<=0||p>=n) 
		printf("ERROR\n");
	else
	{
		reverse(R,0,p-1);
		reverse(R,p,n-1);
		reverse(R,0,n-1);
	}
}

3 ububtu下运行结果

在这里插入图片描述

4

从时间复杂度的角度来看,耗费的时间随着n的增大而增大,为
O(n)。而只耗用了一个空间,及temp占据的空间,所以空间复杂度为O(1)。

5 另一种方法

#include<stdio.h>
#include<string.h>
# define N 50
# define S 50


int main()
{
	void reverse(int R[],int Z[],int l,int r);
	void RCR(int R[],int Z[],int n,int p);
	int i;
	int R[N],Z[S],p,n;
    printf("一共有n个数,n=");
	scanf("%d",&n);
	printf("后p个数左移循环,p=");
	scanf("%d",&p);
	for(i=0;i<=n-1;++i)
		scanf("%d",&R[i]);
	RCR(R,Z,n,p);
	for(i=0;i<=n-1;++i)
		printf("%d ",R[i]);
	printf("\n");
	return 0;
}
 
/*void reverse(int R[],int l,int r)
{
	int i,j;
	int temp;
	for(i=l,j=r;i<j;++i,--j)
	{
		temp=R[i];
		R[i]=R[j];
		R[j]=temp;
	}
}*/
 
void RCR(int R[],int Z[],int n,int p)
{
	int i;
	if(p<=0||p>=n) 
		printf("ERROR\n");
	else
	{
		for(i = 0;i <= p-1;++i)
			Z[i] = R[i];
			printf("已经把前p个数据转移到辅助数组S中");
		for(i = p-1;i <= n;++i)
			R[i-p] = R[i];
			printf("已经将剩余的数据左移p个单位");
		for(i = n-p;i <= n;++i)
			R[i] = Z[i+p-n];
			printf("已经将辅助数组S中的数据转移到后面");
	}
}

在这里插入图片描述

【线性表】一维数组循环左移 2010年考研408试题 设将n(n&amp;amp;amp;gt;1)n(n&amp;amp;amp;gt;1)n(n&amp;amp;gt;1)个整数存放到一维数组RRR中。试设计一个在时间和空间两方面都尽可能高效的算法,将RRR中保存的序列循环左移P(0&amp;amp;amp;lt;P&amp;amp;amp;lt;n)P(0&amp;amp;amp;lt;P&amp;amp;amp;lt;n)P(0&amp;amp;lt;P&amp 阅读详情

相关推荐

科研绘图神器Origin中文版安装后还是英文?手把手教你三步搞定界面汉化

本文详细介绍了Origin软件安装后界面仍显示英文的解决方案,包括基础语言切换、注册表修改和序列号破解三种方法。通过逐步指导,帮助用户快速实现界面汉化,提升科研绘图效率。特别针对教育版用户提供了有效的语言锁定解除方案。

weixin_42524708的博客 1141

2010年计算机联考真题——一维数组循环左移

前记从七月份决定开始考研,中间由于听报告,回家复习数学和政治但无论一些时间。自己准备报考山东大学计算机技术的专硕,幸好是数学是考数学二,专业课一直有一门数据结构,这位我的复习节省了很多时间,不想数学一和统考的计算机基础综合的专业复习那么费劲。现在数据结构的复习完全是参照《王道考研系列——2018年数据结构考研复习指导》在复习。对于数据结构虽然到时候是手写算法,但是毕竟这是编程,对于算法能否正确实现并

戴璞微的学习之路 3308

il2cpp分析-gobal-metadata.dat解密

打开ida,把libil2cpp拖到ida中按快捷键Shift+F12等待字符串分析完后,搜索global-metadata.dat。ida中双击sub_57EE7C进入,VS code中也跳转到LoadMetadataFile函数。VSCode打开il2cpp源代码,全局搜索global-metadata.dat。工具:010Editor,IDA 7.5,Jadx,VS Code。判断加密逻辑为根据文件的长度循环读取字节码做亦或加密。双击搜索出来的结果,切记要选il2cpp目录下的。

Android_machong的博客 8025

【考研·数据结构】408真题 (2010年42题) 的三种解法

考研408真题(2010年42题,数据结构),参考答案上给了两种方法,我自己另外想到了一种方法,每一种方法都进行了思路分析与代码测试,在此做个记录。附详细注释与代码。

Dr_Cheeze的博客 3303

【操作系统】Hello CTF-专为CTF比赛封装的虚拟机 Beta版

很多师傅在学习与研究CTF的道路上,总是碰到想提升自我水平,但缺少本地化的训练环境以及安装各类软件的烦恼现象;因此拥有一些趁手“武器”,干起活来将会事半功倍。CTFos是探姬(ProbiusOfficial)专为CTF比赛封装的虚拟机,基于工具集封装多个版本和系统。CTF入门选手各行业网络/信息从业人员安全相关工作人员但不想在工作机上安装CTF一些奇葩的软件…该系统是通过虚拟机封装的,需要使用打开!一个专为CTF比赛封装的虚拟机,开箱即用。

qq_47493625的博客 1万+

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1113

简单算法——一维数组的循环左移

给定一个有n个元素的数组,使其整体左移m位(m#include <stdio.h> #include <malloc.h> #include <stdlib.h>int main(){ int m=0,n=0,i=0,e=0; printf("请输入序列长度:"); scanf("%d",&n); //定义数组并赋值 int *arr=(int*)malloc

Panda23333的博客 4789

基于halcon的HSV颜色匹配实例

HSV颜色识别原图代码结果 原图 代码 dev_update_off () dev_close_window () *颜色数组 FuseColors := ['Orange','Red','Blue','Yellow','Green'] *画笔颜色数组 DisplayColors := ['coral','red','blue','goldenrod','forest green'] * HSV模型中H分量: Orange 10-30, Red 0-10,Blue 125-162,Yellow 3

qq_39467811的博客 3545

一维数组中序列循环左移p个位置形成新的一维数组

问题描述:设将n(n>1)个整数存放到一维数组arr中,设计一个在时间和空间两方面都尽可能高效的算法,将arr中保存的序列循环左移p(0<p<n)个位置,即将arr中的数据由(X0,X1,...,Xn-1)变换为(Xp,Xp+1,...,Xn-1,X0,X1,...,Xp-1)。 设计思想:本题是在一维数组中进行元素位置变换,对数组内元素位置进行逆置来满足题目要求。 ...

weixin_42070473的博客 630

1.4 点云数据获取方式——结构光相机

与此同时,利用相机从特定角度捕捉变形后的图案,基于三角测量原理,通过精确计算相机与投影仪之间的几何关系以及图案的变形程度,就能准确计算出物体表面各点的三维坐标,从而获取高精度的三维点云数据。在高端制造业中,对于微小零部件的尺寸测量和缺陷检测,结构光相机能够提供极其精确的数据,确保产品质量符合严格的标准。时序编码:这类相机通过序列投射多幅不同图案,如格雷码、相移条纹等,通过对这一系列图案的时间序列进行解码分析,就能够获取亚像素级精度的三维信息,其单点误差能够控制在≤0.1mm,展现出极高的测量精度。

qq625924821的博客 925

【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素

一个Tx PDU在COM模块中的数据流; Tx APP CAN Frame/PDU"发送周期不准"的影响因素;

「汽车电子助手」的博客 2388

2010年408数据结构算法题:循环左移

本文为2010年408数据结构算法题:循环左移,提供了四种解决方案,对应四种算法

little_kid_pea的博客 1029

STM32G474开发板初步入门与编程实战

STM32G474开发板提供了一种快速评估、原型设计和开发STM32G474应用的方式。它搭载了STM32G474RET6微控制器,配备512KB闪存、128KB RAM,支持各种常见的接口和连接,如USB、I2C、SPI、UART等。板载ST-Link/V2-1调试器/编程器,简化了开发过程。

qq_38334677的博客 4956

408真题解析-2010-42-数据结构-数组循环左移

本文解析了2010年408考研数据结构真题,重点讲解数组循环左移的高效实现方法。采用三次反转法,通过反转前p个元素、后n-p个元素及整个数组,实现时间复杂度O(n)、空间复杂度O(1)的原地操作。文章详细阐述了算法思想、C语言实现代码、复杂度分析,并扩展了相关应用场景(如循环右移、单词翻转等)。同时对比了其他实现方法的优劣,指出三次反转法是考研标准答案,强调要避免使用额外数组或低效算法。最后总结了核心考点与大纲对应章节,帮助考生系统掌握该题型。

tobias的博客 439

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

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

2010年数据结构408

将关键字序列(7,8,30,11,18,9,14)散列存储到散列表中,散列表的存储空间是一个下标从0开始的一维数组,散列函数为:H(key)=(key×3)MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。(1)请画出所构造的散列表。(2)分别计算等概率情况下查找成功和查找不成功的平均查找长度。

学习记录 515

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数据结构和算法学习笔记:2010年408真题“循环左移”数组,采用Converse_based_Reverse

数据结构和算法学习笔记:2010年408真题“循环左移”数组,采用Converse_based_Reverse

weixin_53730909的博客 295

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

2010年408考研算法题

题目 设将n(n>1)个整数存放到一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1…Xn-1)变换为(Xp,Xp+1…Xn-1,X0,X1…Xp-1)。 题解 分析 1. 创建int型数组R 数组的创建有三种方式: ①使用常量表达式指定数组维数 int array[5]; ②使用变量表达式指定数组维数。 int n = 5; int array[n]; ③使用malloc()函数。 int *a

Shaun善逸的博客 933

2009 ~ 2019 年 408【数据结构】大题解析

对 2009 ~ 2019 年全国硕士研究生招生考试-计算机科学与技术学科联考-计算机学科专业基础综合(408)的 “数据结构” 大题进行了解析。

kusunoki的博客 2222

【计算机考研408数据结构】历年统考编程大题—线性表

408历年数据结构大题—线性表篇,09年至20年有关线性表问题的题解+思路,完整代码已同步至Gitee代码仓库。

Keep coding! 3809

【考研数据结构刷题】408【2010年第 42题】

设将n(n>1)个整数存放到一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法,将R中保存的序列循环左移p(0n-1 位置进行逆置,最后可得。时间复杂度位0(n),空间复杂度为1。

Code丶Q的博客 561

【2010年408真题】线性表

【问题描述】设将n(n&gt;1)个整数存放在一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移P(P&gt;0)个位置。 例如,假设P&lt;n,将R中的数据(X0,X1…..Xn-1)循环左移P个位置后,变换为(Xp, Xp+1,…..Xn-1,X0,X1……Xp-1) 【测试样例】R={0,1,2,3,4,5,6}     p=3 【输出结果】3 4 ...

努力努力再努力m 1379

2010年408统考真题-数据结构

设将n(n>1)个整数存放在一维数组R中。设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1,...,Xn-1)变换成为(Xp,Xp+1,...,Xn-1,X0,X1,...,Xp-1)。先将数组整体翻转,再根据p的值先翻转左半部分再翻转右半部分。

qq_62704148的博客 422

5.14 2010年408数据结构算法题

把数组 ab 转换成数组 ba(a 代表数组的前 p 个元素,b 代表数组中余下的 n-p 个元素),先将 a 逆置得到a逆b,再将b 逆置得到a逆b逆,最后将整个a逆b逆 逆置得到(a-1b-1)逆=ba。将 R 中保存的序列循环左移 p(0<p<n)个位置,即将 R 中的数据由(X0, X1…Xn-1, X0, X1…tips:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3,am)(b1,b2,b3,...bn)编写一个函数将数组中两个顺序表位置互换,将b的数组放在a前面。

Miraitowa00的博客 395

10 408真题算法

0,X1,...,Xn-1) 变换为 (Xp,Xp+1,...,Xn-1,X0,X1,...,Xp-1

JQ754120902的博客 244

408数据结构算法题专项-2010年

思考:首先从暴力思路思考(简单省时),再重新开一个n空间的数组,将位置依次放入。移动的计算方式为(i-p+n)%n,简单的求余公式,有循环放置的效果。i

m0_60441630的博客 685

【考研·数据结构】408真题 (2010年42题) 的两种解法】

设将n(n>1)个整数存放到一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0

muzillll的博客 397
上一篇: 查找单向链表倒数第k个位置的节点
下一篇: 寻找A和B的中间位置
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值