数组元素逆序

/*
    数组元素逆序 (就是把元素对调)

    涉及数组元素交换的逻辑的时候,可以定义一个中间变量,作用是临时将值存储一下
 */
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();
    }
}

 

posted @ 2024-07-30 20:10  将兀伏  阅读(33)  评论(0)    收藏  举报