java数组平移本质是改变元素相对位置,需依方向选择遍历顺序:右移从后往前、左移从前往后;k位平移推荐三次翻转法;单个元素移动需暂存并校验索引。

Java数组平移本质是改变元素的相对位置,不是简单遍历,但遍历是实现平移的核心手段。关键在于:明确方向(左/右)、确定位数、处理越界、避免覆盖——这些都依赖准确的下标遍历逻辑。
向右平移:从后往前搬,保数据不丢
右移1位时,最后一个元素要“绕到开头”,中间元素整体后挪。若从前往后改,arr[0]会覆盖arr[1],导致数据丢失。必须反向操作:
- 先保存最后一个元素(temp = arr[arr.length - 1])
- 用for循环从末尾开始,逐个把前一个元素赋给后一个位置(arr[i] = arr[i - 1],i从length-1递减到1)
- 最后把temp放回arr[0]
向左平移:从前往后搬,头变尾
左移1位时,第一个元素移到末尾,其余前移。这时正向遍历更自然:
- 暂存arr[0](first = arr[0])
- 循环i从0到length-2,执行arr[i] = arr[i + 1]
- 把first赋给arr[length - 1]
平移k位:分三步走,不依赖额外空间
当k大于1时,直接循环k次单步平移效率低(时间复杂度O(n×k))。推荐“三次翻转法”,仅需遍历3次:
- 翻转整个数组
- 翻转前k个元素
- 翻转剩余n−k个元素
例如[1,2,3,4,5]左移2位:→ [5,4,3,2,1] → [4,5,3,2,1] → [4,5,1,2,3],结果正确。
按指定索引移动单个元素:灵活定位
有时需求不是整体平移,而是把第x个元素(如索引x−1)“抽出来”插到末尾或某位置:
- 用临时变量保存arr[x−1]
- 从x开始到末尾,每个元素前移一位(arr[i−1] = arr[i])
- 把临时值放到目标位置(如arr[n−1])
注意:输入的x通常按“第几个”计数(从1起),代码中要转为索引x−1,且需校验是否越界。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











