数组反转
数组的元素内容反转
方式一:找规律反转
/**
* 数组反转
*/
@Test
public void ArrayReverse() {
//思路
//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[] array = {10, 20, 30, 40, 50, 60};
int temp = 0;
int len = array.length;
for (int i = 0; i < len / 2; i++) {
temp = array[len - 1 - i];
array[len - 1 - i] = array[i];
array[i] = temp;
}
System.out.println("===翻转后数组===");
for (int i = 0; i < len; i++) {
System.out.print(array[i] + "\t");
}
}
输出:
方式二:使用逆序赋值方式
/**
* 数组反转
*/
@Test
public void ArrayReverse1(){
//定义数组
int[] array1 = {1,2,3,4,5,6};
//使用逆序赋值方式
//1. 先创建一个新的数组 array2 ,大小 array1.length
//2. 逆序遍历 array1 ,将 每个元素拷贝到 array2 的元素中(顺序拷贝)
//3. 建议增加一个循环变量 j -> 0 -> 5
int[] array2 = new int[array1.length];
//逆序遍历 array1
for (int i = array1.length - 1, j = 0; i >= 0; i--,j++) {
array2[j] = array1[i];
}
//4. 当 for 循环结束,array2 就是一个逆序的数组 {1,2,3,4,5,6}
//5. 让 array1 指向 array2 数据空间, 此时 array1 原来的数据空间就没有变量引用会被当做垃圾,销毁
array1 = array2;
for (int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + "\t" );
}
}
输出: