数组的反转在数组中比较常见,各位读者可以多加练习。
在面试中有可能会遇到这类的笔试题。
需求如下:
有这样一个数组:[10,20,30,40,50],让我们把数组中的数据进行反转【50,40,30,20,10】
在这里笔者为大家介绍两种方法
第一种方法:我们直接反着输出就好了,这是最简单的方法了。
package demo;
public class demo2 {
public static void main(String[] args) {
//翻转数组
int[] nums ={11,22,33,44,55};
//我们直接从数组长度-1开始,作为初始值
/**
* 这里解释一下,数组的索引是从0开始,所以这里要把数组的长度-1
* 但是最后的条件大家要仔细观看
*/
for (int i = nums.length-1; i>=0; i--) {
System.out.print(nums[i]+" ");
}
}
}
第二种方法相对于第一种更为复杂一点,但是可以更好的锻炼编程的思维。
它的思想是依次前后交换数据即可,在这里我简单的画个图讲解一下。
在for循环中定义两个变量 i 和 j。让i往又走,让j往左走,依次交换。
代码实现:虽然这种方法看起来复杂,但是可以更好的练习我们的编程思维。笔者在代码中做个详情的代码解释。
package demo;
public class demo4 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {11, 22, 33, 44, 55};
System.out.print("数组反转前的数据:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
// i j
/**
* 首先让i站在数组的第一个位置,j站在数组的最后的位置
* 循环条件必须是 i< j
* 循环变量增值按照我们的分析 ,i往右走,就是i++,j往左走,就是j--
* for (循环变量赋初值; 循环条件; 循环变量增值)
* {
* }
*/
for (int i = 0, j = args.length - 1; i < j; i++, j--) {
/**
* 注意两个值交换数据需要定义一个临时变量,否则会丢失数据
* 可以理解为两杯水交换水,如果没有第三个空杯子 ,那么会有一杯水会丢失
*/
//定义临时变量记住数组的最后一个值
int temp = arr[j];
//把前一个位置的值赋值给后一个位置
arr[j] = arr[i];
//再把临时中记录的值给到前一个位置的值
arr[i] = temp;
}
/**
* 起到分割作用
*/
System.out.println();
System.out.print("------------------------------");
System.out.println();
System.out.print("数组反转后的数据:");
//遍历数组中的值
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
代码运行结果:第一个方法笔者没有作输出,大家可以尝试美化一个输出。
注:因为笔者的能力有限,所以会出想比较多的问题,如果出现问题,还请各位读者在评论区留言,笔者看到后会在第一时间修改,谢谢。