/*
陣列元素逆序 (就是把元素對調)
涉及陣列元素交換的邏輯的時候,可以定義一箇中間變數,作用是臨時將值儲存一下
*/
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();
}
}