向量旋转

xiaoxiao2023-05-22  146

问题 将 一个n元向量向左旋转i个位置。例如,当n=8且i=3时,向量abcdefgh旋转为defghabc。使用一个临时变量实现。 技巧1 移动a[0] 到临时变量t, 然后移动a[i] 至a[0] ,a[2i] 至a[i] ,以此类推(将a 中所有下标对n 取模),直到返回到取a[0] 中的元素。 如果该过程没有移动全部元素,就从a[1]开始再次移动,直到所有元素全部移动为止。

技巧2 定义一个函数将a向左旋转一个位置(其时间正比于n)然后调用该函数i次。该方法产生过多的运行时间消耗。

技巧3  可以看作把数组ab转换成ba,同时假定我们拥有一个函数可以把数组特定部分求逆。从ab开始,首先对a求逆,得到(a^r)b,然后对b求逆,得到(a^rb^r)。最后整体求逆,得到(a^rb^r)^r。此时恰好是ba。程序实现:

 

 

 

  

转载请注明原文地址: https://www.6miu.com/read-4995083.html

最新回复(0)