数组反转
- 要求:把数组的元素内容反转。
ArrayReverse.java
arr {11,22,33,44,55,66} {66, 55,44,33,22,11}
方式 1:通过找规律反转
- 【思路分析】
- 规律
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 temp = 0;
int len = arr.length; //计算数组的长度
for( int i = 0; i < len / 2; i++) {
temp = arr[len - 1 - i];//保存
arr[len - 1 - i] = arr[i];
arr[i] = temp;
}
System.out.println("===翻转后数组===");
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");//66,55,44,33,22,11
}
方式 2:使用逆序赋值方式
ArrayReverse02.java
- 思路
1. 先创建一个新的数组arr2
,大小arr.length
2. 逆序遍历arr
,将 每个元素拷贝到arr2
的元素中(顺序拷贝)
3. 建议增加一个循环变量j -> 0 -> 5
int[] arr2 = new int[arr.length];
//逆序遍历 arr
for(int i = arr.length - 1, j = 0; i >= 0; i--, j++) {
arr2[j] = arr[i];
}
//4. 当for循环结束,arr2就是一个逆序的数组 {66, 55, 44,33, 22, 11}
//5. 让 arr 指向 arr2数据空间, 此时 arr原来的数据空间就没有变量引用
// 会被当做垃圾,销毁
arr = arr2;
System.out.println("====arr的元素情况=====");
//6. 输出 arr 看看
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}