Java数组元素反转:详解双指针交换算法
823 字
4 分钟
Java数组元素反转:详解双指针交换算法
数组元素反转
需求:某个数组有5个数据:10,20,30,40,50,请将这个数组中的数据进行反转。 [10, 20, 30, 40, 50] 反转后 [50, 40, 30, 20, 10]数组元素反转的核心,其实是数组中两个数据的交换。我们可以认为两个数据分别存储在两个水杯中。想要交换两个水杯中的东西,我们得借助第三个水杯,如下图所示


数组中元素交换,就是用的借用第三方变量的思想。我们把数组中的每一个元素当做一个水杯,然后索引控制哪两个元素互换位置。
怎么样,才能达到元素反转的效果呢?我们只需将第一个和最后一个元素互换、第二个和倒数第二个互换、依次内推… 如下图所示

代码实现
怎么样写代码,才能达到上面的效果呢?我们继续分析
1.每次交换,需要有左右两边的两个索引,我们可以用i和j表示 刚开始i=0,j=数组长度-1;2.每次让i和j索引位置的两个元素互换位置 arr[i]和arr[j]互换位置3.每次还完位置之后,让i往右移动一位,让j往前移动一位具体代码如下
public class Test2 { public static void main(String[] args) { // 目标:完成数组反转。 // 1、准备一个数组 int[] arr = {10, 20, 30, 40, 50};
// 2、定义一个循环,设计2个变量,一个在前,一个在后 for (int i = 0, j = arr.length - 1; i < j; i++, j--) { // arr[i] arr[j] // 交换 // 1、定义一个临时变量记住后一个位置处的值 int temp = arr[j]; // 2、把前一个位置处的值赋值给后一个位置了 arr[j] = arr[i]; // 3、把临时变量中记住的后一个位置处的值赋值给前一个位置处 arr[i] = temp; }
// 3、遍历数组中的每个数据,看是否反转成功了 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } }}执行流程详解
第一步:初始化
i = 0,j = 4(数组长度 - 1)- 数组:
[10, 20, 30, 40, 50]
第二步:第一次交换
- 交换
arr[0]和arr[4]:10 ↔ 50 - 数组变为:
[50, 20, 30, 40, 10] i++→i = 1,j--→j = 3
第三步:第二次交换
- 交换
arr[1]和arr[3]:20 ↔ 40 - 数组变为:
[50, 40, 30, 20, 10] i++→i = 2,j--→j = 2
第四步:循环结束
- 当
i >= j时,循环结束 - 最终数组:
[50, 40, 30, 20, 10]
关键点总结
- 双指针技术:使用两个指针从数组两端向中间移动
- 临时变量:借助第三个变量实现元素交换
- 循环条件:
i < j确保不会重复交换 - 时间复杂度:O(n),其中 n 是数组长度
- 空间复杂度:O(1),只使用了常数级别的额外空间
总结
通过上面的案例,需要我们掌握元素互换位置的编程思路;以后遇到数据互换问题,都这样做。这是数组操作中的经典算法,也是理解更复杂算法的基础。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
Java数组元素反转:详解双指针交换算法
https://v7w.cn/posts/java-array-reverse/ 相关文章 智能推荐
1
Java数组
Java 本文深入解析Java编程中最基础的数据结构——数组。内容涵盖数组的核心概念、静态与动态两种初始化方式及其内存原理图解,详细讲解了如何通过索引访问与修改元素、使用for循环实现数组遍历,并结合"计算销售总额"与"评委打分系统"两个实战案例,演示了数组在实际开发中的应用,助你夯实Java基础。
2
Java方法详解:从入门到实战,掌握代码复用的核心
Java 本文全面解析Java方法(Method)的核心概念与实战应用。内容涵盖方法的定义、调用、参数传递机制(值传递与引用传递)及返回值处理,深入剖析方法重载(Overloading)的规则与最佳实践。此外,文章还通过实战案例演示了方法的内存执行流程,并介绍了Arrays工具类与可变参数的使用技巧,助你写出结构清晰、高复用性的Java代码。
3
JAVA常用结构语句
Java 本文详解Java核心控制流语句,涵盖for、while、do…while循环与if…else、switch case条件判断,并介绍增强for循环及跳转语句,助你掌握高效代码构建逻辑。
4
Java JSON 序列化库详解:Jackson、Gson、Fastjson
Java 本文详细介绍 Java 生态中三种最流行的 JSON 处理库:Jackson、Gson 和 Fastjson。内容将涵盖它们的基本用法、高级特性、性能对比、优缺点分析以及最终的选型建议。目标读者是需要为项目选择 JSON 库或希望深入了解这些库区别的 Java 开发者。
5
2026年SEO优化终极指南:从算法原理到排名飙升的实操策略
网站优化 想知道如何优化网站 SEO 吗?本篇 2026 年最新 SEO 全面指南,将为你详细解析关键词研究,内容优化,外链策略与技术 SEO,让你的网站轻松登上首页!
随机文章 随机推荐