循环左移数组

数组循环左移 另外,如果需要对数组进行多次循环左移操作,我们可以先计算出数组的总长度,然后将每次操作的偏移量转换为相对于总长度的偏移量。例如,如果k的值等于数组的长度,那么循环左移后数组中的元素位置将不会发生变化。需要注意的是,这个算法中的k可以是任意正整数,也可以是负整数。此外,如果k的值非常大,那么可能会导致数组中的元素被移动到非常靠后的位置,从而影响算法的效率。数组循环左移是指将数组的元素向左移动一定的位置,使得数组的最后一个元素移动到数组的第一个位置,数组的倒数第二个元素移动到数组的第二个位置,以此类推。 阅读详情

【版权声明:转载请保留出处:blog.youkuaiyun.com/algorithm_only。邮箱:liuy0711@foxmail.com】

1.        算法要求

设将n(n>1)个整数存放到一维数组R中,试设计一个在时间和空间两方面尽可能有效的算法,将R中保有的序列循环左移P(0﹤P﹤n)个位置,即将R中的数据由(X0 X1 ……Xn-1)变换为(Xp Xp+1 ……Xn-1  X0  X1 ……Xp-1)。

2.        算法思想

考虑使用队列来实现,将队列前面p个元素依次出队列,再从队尾部依次进队列,即可实现该算法。使用数据结构:

typedef struct qnode{
	elemtype		*base;
	int			front;
	int			rear;
}sqqueue;

3.        算法实现

int in_sqqueue(sqqueue *sq, elemtype e)
{
	if ((sq->rear + 1) % MAXQSIZE == sq->front)
		return ERROR;
	sq->base[sq->rear] = e;
	sq->rear = (sq->rear + 1) % MAXQSIZE;
	return OK;
}
int out_sqqueue(sqqueue *sq, elemtype *e)
{
	if (sq->front == sq->rear)
		return NULL_QUEUE;

	*e = sq->base[sq->front];
	sq->front = (sq->front + 1) % MAXQSIZE;

	return OK;
}
void circle_left_shift_queue(sqqueue *sq, int n)
{
	int			i;
	elemtype		e;
	
	for (i=0; i<n; ++i) {
		out_sqqueue(sq, &e);    /* 从队头出队 */
		in_sqqueue(sq, e);      /* 再从队尾进队 */
	}
}
算法实现源码: http://download.youkuaiyun.com/detail/algorithm_only/3892452
关于PTA中数组循环左移的解法 数组循环左移 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1…an-1)变换为(am…an-1a0a1…am-1)最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 输入第1行给出正整数n(≤100... 阅读详情

相关推荐

django drf 框架知识点(一)——serializer序列化器_用法全解

【django drf】序列化器:别名设置,全部参数序列化,自定义字段,只读只写,部分更新

qq_59344127的博客 1338

算法 - 数组循环左移m个元素

整数数组,n个元素 数组循环左移m个元素 [1,2,3,4,5,6,7,8,9] -> [4,5,6,7,8,9,1,2,3] 数组整体逆转 [1,2,3,4,5,6,7,8,9] -> [9,8,7,6,5,4,3,2,1] 如果循环移动元素个数为3,拆分两部分处理 [9,8,7,6,5,4] [3,2,1] [9,8,7,6,5,4] 逆转 -> [4,5,6,7,8,9] [3,2,1] 逆转 -> [1,2,3] 得到 [4,5,6,7,8,9,1,2,3] ......

coding不死,也未曾凋零 2238

量化金融笔记1-股票量化基础

股票量化基础 文章目录什么是股票股票的定义及其诞生所解决的问题股票的主体和流通股票的常规分类股票价格收益率什么是股票价格的收益率股票价格收益率计算在python中的实现两种收益率算法的特点及应用场合股票交易规则场内交易与场外交易A股、B股、H股国内多层次的资本市场股票交易指令和撮合机制股票交易时间股票交易成本股票复权股票数据介绍与提取行业分类和指数行情数据因子数据标的数据基本面数据 什么是股票 股票的定义及其诞生所解决的问题 股票的定义:股票是一种有价证券,是股份有限公司公开发行的用以证明投资者的股东身份

折桂狂人的博客 2395

7-1 数组循环左移 (20分)

7-1 数组循环左移 (20分) 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a​1⋯​n−1 )变换为(am⋯​n−1​​ a​0​​ a​1​​ ⋯a​m−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。 输出格

weixin_45800612的博客 1256

一张图看懂中国民航适航审定体系:从适航司到审定中心,到底谁管谁?

本文深入解析中国民航适航审定体系,从立法层到执行层的完整链条,揭示适航管理的金字塔结构和核心流程。涵盖适航司、审定中心等关键机构职能,以及型号审定、生产许可审定等全生命周期管理,展现中国适航体系的特色实践与创新探索。

weixin_30896511的博客 476

R语言WGCNA实战:从基因表达矩阵到模块可视化全流程(附避坑指南)

本文详细介绍了使用R语言进行WGCNA(加权基因共表达网络分析)的完整实战流程,涵盖从基因表达矩阵预处理、软阈值选择、网络构建与模块识别,到模块与表型关联分析及结果可视化的关键步骤。文章重点解析了代码实现,并提供了针对数据质量检查、参数调整等常见问题的避坑指南,帮助生物信息学研究者高效挖掘基因共表达模块的生物学意义。

weixin_29062823的博客 580

数组循环向左移动k位的算法

数组循环向左移动k位的算法, 我在课本上只看到了方法一,暂且称为颠倒交换法, 方法二是我自己想出来的,暂且称为循环赋值法. 方法一:颠倒交换法 算法描述:循环左移k位, 先把前面 0 到 k-1位置的数字首尾交换, 然后再把 k 到 len-1位置首尾交换, 最后再把 0 到 len-1下标位置首位交换即可实现, 这里的原理你可以画个例子就懂了 代码: int a[100]; //数组是全...

菜鸟成长之路-wei的博客 1万+

【DRAM存储器六十五】DDR5介绍--训练相关之MPC、Read Training Pattern、Read Preamble Training Mode

简述DDR5 MPC操作和读训练时颗粒输出pattern的配置

highman110的博客 362

7-1 数组循环左移(20 分)

7-1 数组循环左移(20 分) 题目: 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a​0​​a​1​​⋯a​n−1​​)变换为(a​m​​⋯a​n−1​​a​0​​a​1​​⋯a​m−1​​)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整

C_1223_的博客 5718

Unity之ASE+ShaderGraph+VFX入门到精通 目录

这里是ASE+ShaderGraph+VFX从入门到精通专栏的目录,不停更新中,有问题随时留言或者私信。

TxNet 2841

VMware Horizon 8 2111 部署系列(九)创建即时克隆桌面池

即时克隆桌面池是在 vCenter Server 中使用 vmFork 技术(称为即时克隆 API)从最佳配置映像创建的自动桌面池。即时克隆共享同一个基础映像虚拟机,使用基础映像虚拟机的快照创建的,它使用的存储空间也少于完整虚拟机。 即时克隆始终保持开机状态,并在注销后从当前发布的映像重新创建。...

白昼的技术专栏 4043

数组循环左移(简单方法)

       本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1…an-1)变换为(am…an-1a0a1…am-1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式        输入第1行给出正整数n

【看这个就对了】 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【c++】数组循环左移

本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a​0a1⋯an−1)变换为(am⋯an−1a0a1 ​⋯a​m−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出循环左移m位以后的整数序列,之间用空

sycamoreRD的博客 4827

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

将数组循环左移

下面请看一道算法题: 设将n (n>1) 个整数存放到一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法,将R中保存的序列循环左移p (0<p<n) 个位置,即将R中的数据序列由(x0, x1,……,xn-1)变换为(xp,xp+1,……,xn-1,x0,x1,……,xp-1)。 在没学算法之前,我们习惯了使用简单的求解方法:借助一个临时数组B首先将数组R前p个元素保存...

陌意随影的博客 2160

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数组的循环左移

描述 设将n(n>1)个整数存放到一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法,将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(x0, x1…, xn-1)变换为(xp,xp+1,…,xn-1,x0,x1,…,xp-1)。 输入 多组数据,每组数据有三行。第一行为一个整数n,代表数组R中有n个元素。第二行为数组R中的n...

aanwlpv8704的博客 417

数组循环左移问题

题目:将一个一维数组A循环左移p位分析:循环左移p位,则第p个元素(A[p-1])将成为分界点,数组的下标值从0开始,无负值,所以元素移动到第0位时如果要继续左移,只能移动到数组的末尾,从A[0]到A[p-1]依次移动到数组末尾,相当于讲整个数组分成两部分,A[0]-A[p-1]为第一部分,A[p]-A[n-1]为一部分,循环左移相当于将两部分的位置交换,每一部分内部的元素的位置不改变。在实际操作...

xmi_hux的博客 3659
上一篇: 取单链表倒数第k个元素
下一篇: 求两个等长升序序列的中位数
algorithm_only
博客等级 码龄15年 91粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值