数组的反转

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的反转相关的知识,希望对你有一定的参考价值。

数组的反转


逆序前:[19, 4, 23, 27, 15, 18]
逆序后:[18, 15, 27, 23, 4, 19]

【参考代码1.0】

package com.yangbocsu.yanghuisanjiao;

import java.util.Arrays;
import java.util.Random;

public class yanghui {
    public static void main(String[] args) {
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++)
        {
            arr[i] = (int)(Math.random()*(30-1)+1) ;
        }
        System.out.println("逆序前:"+Arrays.toString(arr));

        if (arr.length % 2 ==0) //偶数个数时
        {
            int mid = (arr.length-1)/2;
            int temp;
            for (int i = mid; i >=0 ; i--)
            {
                temp = arr[i];
                 arr[i] = arr[arr.length - 1 - i];
                arr[arr.length - 1 - i] = temp;
            }
        }
        else   //奇数数个数时
        {
            int mid = arr.length/2;
            int temp;
            for (int i = mid - 1; i >=0 ; i--)
            {
                temp = arr[i];
                arr[i] = arr[arr.length - 1 -i];
                arr[arr.length - 1 -i] = temp;
            }
        }

        System.out.println("逆序后:"+Arrays.toString(arr));


    }
}

【参考代码1.1】

package com.yangbocsu.yanghuisanjiao;

import java.util.Arrays;
import java.util.Random;

public class yanghui {
    public static void main(String[] args) {
        int[] arr = new int[5];
        for (int i = 0; i < arr.length; i++) //数组赋值
        {
            arr[i] = (int)(Math.random()*(30-1)+1) ;
        }
        System.out.println("逆序前:"+Arrays.toString(arr));

        int mid;
        int temp;
        int length = arr.length;
//        if (length % 2 ==0) //偶数个数时
//            mid = (length-1)/2;
//        else   //奇数数个数时
//            mid = length/2 - 1;

        mid = (length % 2 == 0)  ? (length-1)/2 : length/2 - 1;

        for (int i = mid ; i >=0 ; i--)  //逆序处理,从中间开始分
        {
            temp = arr[i];
            arr[i] = arr[arr.length - 1 -i];
            arr[arr.length - 1 -i] = temp;
        }

        System.out.println("逆序后:"+Arrays.toString(arr));


    }
}

【参考代码2.0】

package com.yangbocsu.yanghuisanjiao;

import java.util.Arrays;
import java.util.Random;

public class yanghui {
    public static void main(String[] args) {
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) //数组赋值
        {
            arr[i] = (int)(Math.random()*(30-1)+1) ;
        }
        System.out.println("逆序前:"+Arrays.toString(arr));
        
        //其实没有必要进行奇偶数判断; 0 1 2 3 4     0 1 2 3 4 5
        //mid = 5/2 = 2      i = 0 1 
        //mid = 6/2 = 3      i = 0 1 2
        for (int i = 0 ; i < arr.length/2 ; i++)  //逆序处理,从中间开始分
        {
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 -i];
            arr[arr.length - 1 -i] = temp;
        }

        System.out.println("逆序后:"+Arrays.toString(arr));


    }
}

【参考代码2.1】

package com.yangbocsu.yanghuisanjiao;

import java.util.Arrays;
import java.util.Random;

public class yanghui {
    public static void main(String[] args) {
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) //数组赋值
        {
            arr[i] = (int)(Math.random()*(30-1)+1) ;
        }
        System.out.println("逆序前:"+Arrays.toString(arr));

        //前后夹击
        for (int i = 0,j = arr.length - 1; i < j ; i++,j--)
        {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;

        }
        System.out.println("逆序后:"+Arrays.toString(arr));


    }
}

以上是关于数组的反转的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

关于代码片段的时间复杂度

如何在 BackStack 上反转片段动画?

2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。(代码片段

C语言反转单向链表的代码

VSCode自定义代码片段—— 数组的响应式方法