假设有一个数组{1,2,3,4,5,6},要求输出其循环左移若干位之后的结果。(<编程珠玑>算法实现)
书上的解释已经非常明白了,只是实现了一下算法。
可以将问题转化成把数组ab变成ba。先将b翻转成b',然后将a翻转成a',随后将a'b'一起翻转成为(a'b')',也就是ba。完成。
代码如下:
书的后面有一道习题是这个的延伸,如何将abc转换成cba。可以先将ab看成一部分,转换成b'a',记为d,这样就和前面的问题一致了。代码只需要改left_shift函数。我将其命名为swap函数。
它的原理是和left_shift函数一样的。