数组反转

数组的元素内容反转

方式一:找规律反转

    /**
     * 数组反转
     */
    @Test
    public void ArrayReverse() {
        //思路
        //1. 把 arr[0] 和 arr[5] 进行交换 {66,22,33,44,55,11}
        //2. 把 arr[1] 和 arr[4] 进行交换 {66,55,33,44,22,11}
        //3. 把 arr[2] 和 arr[3] 进行交换 {66,55,44,33,22,11}
        //4. 一共要交换 3 次 = arr.length / 2
        //5. 每次交换时,对应的下标 是 arr[i] 和 arr[arr.length - 1 -i]
        int[] array = {10, 20, 30, 40, 50, 60};
        int temp = 0;
        int len = array.length;
        for (int i = 0; i < len / 2; i++) {
            temp = array[len - 1 - i];
            array[len - 1 - i] = array[i];
            array[i] = temp;
        }
        System.out.println("===翻转后数组===");
        for (int i = 0; i < len; i++) {
            System.out.print(array[i] + "\t");
        }

    }

输出:

image

方式二:使用逆序赋值方式

    /**
     * 数组反转
     */
    @Test
    public void ArrayReverse1(){
        //定义数组
        int[] array1 = {1,2,3,4,5,6};
        //使用逆序赋值方式
        //1. 先创建一个新的数组 array2 ,大小 array1.length
        //2. 逆序遍历 array1 ,将 每个元素拷贝到 array2 的元素中(顺序拷贝)
        //3. 建议增加一个循环变量 j -> 0 -> 5
        int[] array2 = new int[array1.length];
        //逆序遍历 array1
        for (int i = array1.length - 1, j = 0; i >= 0; i--,j++) {
            array2[j] = array1[i];
        }
        //4. 当 for 循环结束,array2 就是一个逆序的数组 {1,2,3,4,5,6}
        //5. 让 array1 指向 array2 数据空间, 此时 array1 原来的数据空间就没有变量引用会被当做垃圾,销毁
        array1 = array2;
        for (int i = 0; i < array1.length; i++) {
            System.out.print(array1[i] + "\t" );
        }

    }

输出:

image

posted @ 2022-03-30 12:03  ___sunsets  阅读(49)  评论(0)    收藏  举报