设计一个算法,将数组A[0···n ]中的所有元素循环右移k位,要求只用一个数组元素大小的附加空间
1个回答
关注
展开全部
设计一个算法,将数组A(0...n-1)中的元素循环右移k位,假设原数组序列为a0, a1, ... an-2, an-1,移动后为an-k, an-k+1, ..., a0, a1, ... , an-k-1
咨询记录 · 回答于2022-10-03
设计一个算法,将数组A[0···n ]中的所有元素循环右移k位,要求只用一个数组元素大小的附加空间
设计一个算法,将数组A(0...n-1)中的元素循环右移k位,假设原数组序列为a0, a1, ... an-2, an-1,移动后为an-k, an-k+1, ..., a0, a1, ... , an-k-1
要求:只用一个元素大小的附加存储;元素移动或交换次数与n线性相关。例:n= 10, k = 3;原始数组:0,1,2,3,4,5,6,7,8,9右移后的数组7,8,9,0,1,2,3,4,5,6
思路:空间上只用一个附加存储,即只有一个额外的空间存放数据;与n线性相关,即不能够采用多次右移的方式进行,需要一次成型。目前的想法是建立一个循环,采用确定的映射关系来进行交换元素。但是目前的循环体有问题