java:给定一个数组,把这个数组中所有元素顺序进行颠倒

给定一个有序数组,把这个数组中所有元素顺序进行颠倒
假定这个数组内的元素是有序的,这样好观察

int[] nums = new int[]{1,2,3,4,5,6,7,8,9,0};

思路是这样的
我们可以先获取数组第一个元素和最后一个元素,让二者交换位置,交换完后索引相应++和–

原顺序
1,2,3,4,5,6,7,8,9,0

第一次交换
0,2,3,4,5,6,7,8,9,1

第二次交换
0,9,3,4,5,6,7,8,2,1

第三次交换
0,9,8,4,5,6,7,3,2,1

第四次交换
0,9,8,7,5,6,4,3,2,1

第五次交换
0,9,8,7,6,5,4,3,2,1

先定义两个int类型数据min和max来充当要交换的元素的下标,也称索引
再定义一个int类型的temp用来缓冲
因为nums.length得到的是数组长度,索引是从0开始,所以要-1

int min = 0;
int max = nums.length - 1;//因为nums.length得到的是数组长度,索引是从0开始,所以要-1
int temp = 0;

将数组遍历,判断min是否小于max,是,则执行下面代码,不是,则停止

1、先将nums[min],也就是第一个元素赋值给temp,nums[min]可以被覆盖
2、nums[min]接收nums[max]数组最大索引处的值
3、nums[max]接收temp的值
4、min++,获取下一个元素;max–,获取上一个元素
5、进入下一次循环

for (int i = 0; i < nums.length; i++) {
    if (min < max){
        temp = nums[min];
        nums[min] = nums[max];
        nums[max] = temp;
        min++;
        max--;
     }
}

输出结果

for (int num : nums) {
    System.out.print(num + "\t");
}
交换后:0	9	8	7	6	5	4	3	2	1
原顺序:1	2	3	4	5	6	7	8	9	0

这样就完成了交换顺序,下面是源代码

public class Test_10 {
    public static void main(String[] args) {
        int[] nums = new int[]{1,2,3,4,5,6,7,8,9,0};
        int temp = 0;
        int min = 0;
        int max = nums.length - 1;
        for (int i = 0; i < nums.length; i++) {
            if (min < max){
                temp = nums[min];
                nums[min] = nums[max];
                nums[max] = temp;
                min++;
                max--;
            }
        }

        for (int num : nums) {
            System.out.print(num + "\t");
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值