首页 二维数组螺旋排序

二维数组螺旋排序

举报
开通vip

二维数组螺旋排序二维数组螺旋输出例如:输入数组12345678910111213141516输出数组12341213145111615610987Java实现方案ArrClass.java/*** 二维数组的元素进行螺旋排列,二维数组是有序的,输出螺旋排序* @author zdd*/public class ArrClass {private int l, r, u, d; //左右上下private int n, m; //行列private in...

二维数组螺旋排序
二维数组螺旋输出例如:输入数组12345678910111213141516输出数组12341213145111615610987Java实现 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ArrClass.java/*** 二维数组的元素进行螺旋排列,二维数组是有序的,输出螺旋排序* @author zdd*/public class ArrClass {private int l, r, u, d; //左右上下private int n, m; //行列private int i, j; //当前走到的位置;private int[][]arr;//结果集private enum Direction {//枚举right, down, left, up;}private Direction pos;private void init(int n, int m) {this.n = n;this.m = m;this.l = -1; //左边界this.r = m; //右边界this.u = 0; //上边界this.d = n; //下边界this.i = 0;this.j = 0;this.arr = new int[n][m];this.pos = Direction.right;//初始向右走}/*** 处理,螺旋排序* @param arr 二维数组,每行的列数必须相同;* @param n 参数arr的行数* @param m 参数arr的列数*/public void deal(Integer [][] arr, int n, int m) {this.init(n, m);for (int i = 0; i < n; i) {for (int j = 0; j < m; j) {int d = arr[i][j];boolean flag = push(d);while(!flag) {flag = push(d);}}}}private boolean push(int data) {if(pos == Direction.right) { //向右if(j < r) {arr[i][j] = data;j;return true;} else {j--;i;r--;pos = Direction.down;return false;}} else if(pos == Direction.down) { //向下if(i < d) {arr[i][j] = data;i;return true;} else {i--;j--;d--;pos = Direction.left;return false;}} else if(pos == Direction.left) { //向左if(j > l) {arr[i][j] = data;j--;return true;} else {j;i--;l;pos = Direction.up;return false;}} else { //向上if(i > u) {arr[i][j] = data;i--;return true;} else {i;j;u;pos = Direction.right;return false;}}}/*** 矩阵形式输出,空格分割开;*/public void print() {for (int i = 0; i < n; i) {for (int j = 0; j < m; j) {System.out.print(arr[i][j]);if(j < m - 1) {System.out.print(" ");}}if(i < n - 1) {System.out.println();}}}/*** get方法,获取结果集;* @return arr 处理后的二维数组;*/public int[][] getArr() {return arr;}}//二维数组的元素进行螺旋排列,二维数组是有序的,螺旋排序如 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 所示//输入:将从一个整形 T 开始,表示后续有 T 个实例。//每个实例第一行的两个整数 N M表示二维数组行列数,//表示有N行数每行M个数构成数组,数组都是已经排序好的(排序数组)。//输出:打印出螺旋排序后的数组////样例输入://1//4 4//1 2 3 4//5 6 7 8//9 10 11 12//13 14 15 16//样例输出://1 2 3 4//12 13 14 5//11 16 15 6//10 9 8 7测试用例:Main.javaimport java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();int t = 0;ArrClass ac = new ArrClass();while (t < num) {Integer n = scanner.nextInt();Integer m = scanner.nextInt();Integer [][]arr = new Integer[n][m];for (int i = 0; i < n; i) {for (int j = 0; j < m; j) {arr[i][j] = scanner.nextInt();}}ac.deal(arr, n, m);ac.print();t;if(t < num) {System.out.println();}}}/*2441234567891011121314151643123456789101112*/}
本文档为【二维数组螺旋排序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_511210
暂无简介~
格式:doc
大小:23KB
软件:Word
页数:8
分类:
上传时间:2022-09-11
浏览量:0