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

admin2013-04-26  50

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

选项

答案算法的基本设计思想:可以将这个问题看作是把数组ab转换成数组ba(a代表数组的前P个元素,b代表数组中余下的n—P个元素),先将a逆置得到8.-1b,再将b逆置得到a-1b-1,最后将整个a-1b-1逆置得到(a-1b-1)-1=ha。设Reverse函数执行将数组元素逆置的操作,对abcdefgh向左循环移动3(p=3)个位置的过程如下:Reverse(0,p-1)得到cbadefgh;Reverse(p,n—1)得到cbahgfed;Reverse(0,n一1)得到defghabc。注:Reverse中,两个参数分别表示数组中待转换元素的始末位置。

解析
转载请注明原文地址:https://kaotiyun.com/show/15xi777K
0

最新回复(0)