晚上完成算法实现。待续——
题目:
设计一个算法,将数组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线性相关,即不能够采用多次右移的方式进行,需要一次成型。
目前的想法是建立一个循环,采用确定的映射关系来进行交换元素。
但是目前的循环体有问题。
待续——