/**
* 顺时针遍历数组
*
* @author 承天
*
*/
public class ClockwiseArray {
final int m = 5;
final int n = 5;
int arr[][] = new int[m][n];
public ClockwiseArray() {
int x = 1;
// 初始化数组并打印出来,方便查看结果
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = x++;
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
/**
* x1,y1对应左上角下标
* y1,y2对应右下角下标
*/
int x1 = 0, y1 = 0, x2 = m - 1, y2 = n - 1;
boolean status = true;
while (status) {
//打印当前上面行,不包括最后一个数
for (int i = y1; i < y2; i++) {
System.out.print(arr[x1][i] + " ");
}
//打印当前右边行,不包括最后一个数
for (int i = x1; i < x2; i++) {
System.out.print(arr[i][y2] + " ");
}
//打印当前底部行,不包括最后一个数
for (int i = y2; i > y1; i--) {
System.out.print(arr[x2][i] + " ");
}
//打印当前左边行,不包括最后一个数
for (int i = x2; i > x1; i--) {
System.out.print(arr[i][y1] + " ");
}
//外层打印完毕,往里面走一圈
x1++;
y1++;
x2--;
y2--;
//由于打印时不打印最后一个数,所以这里要处理一下最后一个数的特殊情况
if (x2 == x1) {
System.out.println(arr[x1][y1] + " ");
}
//当x2<x1时,表示已遍历完所有层
if (x2 < x1) {
status = false;
}
}
}
public static void main(String[] args) {
new ClockwiseArray();
}
}
顺时针遍历数组
最新推荐文章于 2023-06-20 17:23:21 发布