反转数组中元素的两种方法思路
第一种方法的思路是在原数组上操作,通过一个中间变量来交换原数组中的首尾元素
第二种方法的思路是反向遍历原数组,同时用一个新的数组来逐个接收原数组中的元素
具体代码如下:
第一种
public abstract class Template {
public static void main(String[] args) {
int[] arr1 = {1,2,3,4,5};
for (int i = 0; i <= arr1.length / 2; i++) {
int temp = arr1[i];
arr1[i] = arr1[arr1.length - 1 -i];
arr1[arr1.length - 1 -i] = temp;
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + "\t"); //打印输出:5 4 3 2 1
}
}
}
第二种
public abstract class Template {
public static void main(String[] args) {
int[] arr1 = {1,2,3,4,5};
int[] arr2 = new int[arr1.length];
for (int i = arr1.length - 1; i >= 0; i--) {
arr2[i] = arr1[arr1.length - 1 - i];
}
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + "\t"); //打印输出:5 4 3 2 1
}
}
}
第一种方法会改变原数组中的内容,无法继续使用原数组;第二种方法创建了一个新的数组对象,没有改变原数组,可以继续使用原数组,若还要用到原数组,第二种方法更合适,但是多创建了一个对象,内存占用会高一些,有的情况下也无法实例化数组(如泛型参数方法中,无法创建泛型数组).两种方法各有各的优势,具体使用哪种,还得看实际情况.