反转实现:
#方法1:
移动法:
定义始末索引指针,遍历交换.
import java.util.Arrays;
public class Change1 {
public static void main(String[] args) {
//定义一个数组
int arr[] = {12, 11, 65, 55, 89};
int temp = 0;
//定义两个变量,表示开始结束时的指针,start,end; end用动态变量表示; 循环条件是start<end指针的时候才执行
for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
运行截图:
#方法2:
克隆法:
创建新数组,将原数组倒序遍历并给新数组正序赋值.
import java.util.Arrays;
public class Change2 {
public static void main(String[] args) {
//静态数组初始化
int[] arr = {11, 22, 33, 44, 55};
//定义一个新的动态数组..
int[] newArr = new int[arr.length];
//定义一个索引值
int index = 0;
//将原数组倒序遍历出来...
for (int i = arr.length - 1; i >= 0; i--) {
//将倒序元素赋给新数组
newArr[index] = arr[i];
//索引值++
index++;
}
//遍历
System.out.println("-------反转前-------");
System.out.println(Arrays.toString(arr));
System.out.println("-------反转后-------");
System.out.println(Arrays.toString(newArr));
}
}
运行截图:
二维数组顺、逆时针实现:
#顺时针:
顺时针公式:
新数组[j][3 - i] = 原数组[i][j];
/**
* 二维数组的顺时针旋转
*/
public class TestClockwise {
public static void main(String[] args) {
int[][] datas = new int[][]{//原数组
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int[][] newArr = new int[4][4];//新数组
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
newArr[j][3 - i] = datas[i][j];
}
}
System.out.println("-----原数组----");
for (int i = 0; i < datas.length; i++) {
for (int j = 0; j <datas[i].length; j++) {
System.out.print(datas[i][j]+"\t");
}
System.out.println();
}
System.out.println("---顺时针数组---");
for (int i = 0; i < newArr.length; i++) {
for (int j = 0; j <newArr[i].length; j++) {
System.out.print(newArr[i][j]+"\t");
}
System.out.println();
}
}
}
运行截图:
#逆时针:
逆时针公式:
新数组[3 - j][i] = 原数组[i][j];
/**
* 二维数组的逆时针旋转
*/
public class TestAnticlockwise {
public static void main(String[] args) {
int[][] datas = new int[][]{//原数组
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int[][] newArr = new int[4][4];//新数组
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
newArr[3 - j][i] = datas[i][j];
}
}
System.out.println("-----原数组----");
for (int i = 0; i < datas.length; i++) {
for (int j = 0; j <datas[i].length; j++) {
System.out.print(datas[i][j]+"\t");
}
System.out.println();
}
System.out.println("---逆时针数组---");
for (int i = 0; i < newArr.length; i++) {
for (int j = 0; j <newArr[i].length; j++) {
System.out.print(newArr[i][j]+"\t");
}
System.out.println();
}
}
}
运行截图:
总结:
代码可能会比较繁琐,请多指教!!