第五章数组和广义表518voidRShi
tA
i
tk把数组A的元素循环右移k位只用一个辅助存储空间fori1ikiif
i0ki0pi求
和k的最大公约数pfori0ijili
k
tempAiwhileliAjAljllj
k
循环右移一步AjtempforRSh分析要把A的元素循环右移k位则A0移至AkAk移至A2k直到最终回到A0然而这并没有全部解决问题因为有可能有的元素在此过程中始终没有被访问过而是被跳了过去分析可知当
和k的最大公约数为p时只要分别以A0A1Ap1为起点执行上述算法就可以保证每一个元素都被且仅被右移一次从而满足题目要求也就是说A的所有元素分别处在p个