问题:一个数组A中存有N(N>0)个数, 在不允许使用任何另外数组的前提下, 将每个整数循环右移M(M>0)位, 考虑移动数据的次数尽量少, 要如何设计移动方法?并分析时间复杂度.示意图如下:分析1当然, 最简单的方法莫过于直接每次向右移动一个, 要移动M位, 就移动 ...
问题:
一个数组A中存有N(N>0)个数, 在不允许使用任何另外数组的前提下, 将每个整数循环右移M(M>0)位, 考虑移动数据的次数尽量少, 要如何设计移动方法?
并分析时间复杂度.
示意图如下:
分析1
当然, 最简单的方法莫过于直接每次向右移动一个, 要移动M位, 就移动M次. 代码如下:
//传入操作数组和移动的位数 void moveRight(int Arr[], int M){ //保存下数组的最后一个数 int endNum = Arr[N-1]; //将0~N-2位数向后移动一位 int i; for(i=N-1; i>0; i--){ Arr[i] = Arr[i-1]; } //将最后一位数放在第一位 Arr[0] = endNum; }
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:数组元素循环右移问题
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。