陣列元素逆序

将兀伏發表於2024-07-30
/*
    陣列元素逆序 (就是把元素對調)

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

相關文章