/*
数组元素逆序 (就是把元素对调)
涉及数组元素交换的逻辑的时候,可以定义一个中间变量,作用是临时将值存储一下
*/
public class ArrayTest3 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7};
System.out.println("逆序前:");
printIntArray(arr);
// //第一个元素与最后一个元素交换
// int tmp1 = arr[0];
// arr[0] = arr[arr.length - 1 - 0];
// arr[arr.length - 1 - 0] = tmp1;
//
// //第二个元素与倒数第二个元素交换
// int tmp2 = arr[1];
// arr[1] = arr[arr.length - 1 - 1];
// arr[arr.length - 1 - 1] = tmp2;
//
// //第三个元素与倒数第三个元素交换
// int tmp3 = arr[2];
// arr[2] = arr[arr.length - 1 - 2];
// arr[arr.length - 1 - 2] = tmp3;
// System.out.println("逆序后:");
// printIntArray(arr);
//小结论:交换的次数 = 数组的长度 / 2
//使用for循环改进
//i: 交换的次数
// for (int i = 0; i < arr.length / 2; i++) {
// int tmp = arr[i];
// arr[i] = arr[arr.length - 1 - i];
// arr[arr.length - 1 - i] = tmp;
// }
int[] resArr1 = niXu1(arr);
System.out.println("逆序后:");
printIntArray(resArr1);
//实现逆序的方式2:
int[] resArr2 = niXu2(arr);
System.out.println("逆序后:");
printIntArray(resArr2);
}
/*
将逆序2的功能封装成一个方法: 定义指针的方式
*/
public static int[] niXu2(int[] arr) {
for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
return arr;
}
/*
将逆序1的功能封装成一个方法
*/
public static int[] niXu1(int[] arr) {
for (int i = 0; i < arr.length / 2; i++) {
int tmp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = tmp;
}
return arr;
}
/*
将输出int类型的数组功能封装成一个方法
*/
public static void printIntArray(int[] array) {
for (int i = 0; i < array.length; i++) {
if (i == 0) {
System.out.print("[" + array[i] + ", ");
} else if (i == array.length - 1) {
System.out.print(array[i] + "]");
} else {
System.out.print(array[i] + ", ");
}
}
//换行
System.out.println();
}
}
标签:arr,int,元素,System,length,数组,out,逆序 From: https://www.cnblogs.com/k8409/p/18333273