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");
}