
本文介绍在 java 中高效实现字符串数组中相邻元素两两交换(如 a,b,c,d → b,a,d,c)的两种标准循环方法,并提供可直接运行的代码示例与关键注意事项。
本文介绍在 java 中高效实现字符串数组中相邻元素两两交换(如 a,b,c,d → b,a,d,c)的两种标准循环方法,并提供可直接运行的代码示例与关键注意事项。
在实际开发中,常需对数组进行局部重排,其中“相邻元素两两交换”(pairwise swapping)是一种典型场景:将索引 0 与 1、2 与 3、4 与 5……位置的元素互换,从而实现成对翻转。该操作时间复杂度为 O(n),空间复杂度为 O(1),无需额外集合,适合原地修改。
以下为两种等效且推荐的实现方式:
✅ 方法一:步长为 2 的索引遍历(推荐)
通过 i += 2 直接跳转到每对起始位置,并用边界条件 i + 1 < array.length 确保不越界(自动忽略末尾单个元素):
String[] array = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
for (int i = 0; i + 1 < array.length; i += 2) {
String temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
// 结果:{"B", "A", "D", "C", "F", "E", "H", "G", "J", "I"}✅ 方法二:基于对数的索引计算
以 array.length / 2 作为循环次数,显式计算每对下标 2*i 和 2*i+1:
for (int i = 0; i < array.length / 2; i++) {
String temp = array[2 * i];
array[2 * i] = array[2 * i + 1];
array[2 * i + 1] = temp;
}? 注意事项:
- 两种写法逻辑等价,但方法一更直观、边界判断更自然;
- 若数组长度为奇数(如 9 个元素),末尾元素(索引 8)不会参与交换,保持原位;
- 所有操作均为原地交换,不创建新数组,适用于内存敏感场景;
- 使用 String 类型时注意其不可变性——此处交换的是引用,不影响字符串内容本身。
总结:只需一个简洁的 for 循环配合临时变量,即可稳健完成相邻配对交换。建议优先采用方法一,代码清晰、容错性强,是 Java 数组基础操作中的实用范式。
立即学习“Java免费学习笔记(深入)”;


















