07 数组的反序

数组的反序

准备工作

public class InvertedSequence {
    public static void main(String[] args) {
        //inverted sequence是反序的意思
        int[] a={2,77,-4,6,11};
        System.out.println("原数组如下所示:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+"\t");
        }
        System.out.println();//换行
    }
}

A.数组的反序输出

1.思路分析:

​ 思路:把数组从最后一个位置开始遍历输出即可

2.核心代码

 System.out.println("数组的反序输出(以奇数个数据为例)如下所示:");
        for (int i = a.length-1; i >=0; i--) {
             //注意:数组的最后一个位置为数组长度-1,因为数组的下标是从0开始的
            System.out.print(a[i]+"\t");
        }

3.运行截图

B.原数组变成反序后的数组

1.思路分析:

//分析:第一次拿第一个与最后一个交换,第二次拿第二个与倒数第二个交换
// 依次类推下去,即第i个元素与第a.length-1-i个元素互换
// 原数组就可以反序了,
// 那交换次数又怎么得到呢?
// 当数组长度为3时,交换次数很显然为1次,当数组长度为4时,交换次数为2
// 当数组长度为1时,交换次数很显然为0次;
// 当数组长度为5时,交换次数很显然为2次,当数组长度为6时,交换次数为3
// 由上面可以推出:无论数组长度是奇数还是偶数,它的交换的次数都是数组长度/2
// 注意:整形数据进行/运算会自动舍弃小数
//思路为:设置一个循环,初始为0,循环次数为数组长度/2,
// 循环体里面的内容是进行第i个元素与第a.length-1-i的互换

2.核心代码:

  for (int i = 0; i < a.length/2; i++) {
           int temp=a[i];//temp定义在里面的好处是生命周期短一些,然后能及时被gc机制处理
           a[i]=a[a.length-1-i];
           a[a.length-1-i]=temp;
        }
        System.out.println("反序后的数组(以奇数个数据为例)如下所示:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+"\t");
        }

3.运行截图

posted @ 2020-11-25 10:51  SSS翱翔万里  阅读(568)  评论(0编辑  收藏  举报