import java.util.ArrayList;
import java.util.List;
public class ArraySort {
private boolean isObey =true;
private int strLength=3;
public static void main(String agr[]) {
int m=4;
int n=4;
ArraySort t = new ArraySort();
// 逆时针从外到内
List<String> list1 = new ArrayList<String>();
t.isObey=true;
t.sort(m-1, n-1,list1);
t.print(list1, m, n);
// 顺时针从内到外
List<String> list2 = new ArrayList<String>();
t.dList(list1, list2);
t.print(list2, m, n);
// 顺势针从外到内
List<String> list3 = new ArrayList<String>();
t.isObey=false;
t.sort(m-1, n-1,list3);
t.print(list3, m, n);
// 逆时针从内到外
List<String> list4 = new ArrayList<String>();
t.dList(list3, list4);
t.print(list4, m, n);
}
private void print(List<String> list,int m,int n){
String a[][] = new String[m][n];
int i[] = getTestArray(50);
for(int j=0;j<list.size();j++){
String s=list.get(j);
int x = new Integer(s.split("&")[0]).intValue();
int y = new Integer(s.split("&")[1]).intValue();
if(i.length>j){
a[x][y]=i[j]+"";
}else{
a[x][y]="0";
}
}
System.out.println("");
for(int x=0;x<m;x++){
for(int y=0;y<n;y++){
System.out.print(" "+FormatButtonText(a[x][y]));
}
System.out.println("");
}
}
private int[] getTestArray(int x){
int a[] = new int[x];
for(int i=0;i<x;i++){
a[i]=i;
}
return a;
}
private void dList(List<String> list1,List<String> list2){
int len = list1.size()-1;
for(int i=len;i>=0;i--){
list2.add(list1.get(i));
}
}
private void sort(int m, int n,List list) {
if (isObey) {
jiaM(-1, 0, m, n, 0, 1,list);
} else {
jiaN(0, -1, m, n, 1, 0,list);
}
}
private void jiaM(int m, int n, int i, int j, int a, int b,List<String> list) {
if (m < i) {
m++;
list.add(m + "&" + n);
jiaM(m, n, i, j, a, b,list);
} else {
if(isObey){
jiaN(m, n, i, j, a, b,list);
}else{
janN(m, n, i, j, a, b,list);
}
}
}
private void jiaN(int m, int n, int i, int j, int a, int b,List<String> list) {
if (n < j) {
n++;
list.add(m + "&" + n);
jiaN(m, n, i, j, a, b,list);
} else {
if(isObey){
janM(m, n, i, j, a, b,list);
}else{
jiaM(m, n, i, j, a, b,list);
}
}
}
private void janM(int m, int n, int i, int j, int a, int b,List<String> list) {
if (m > a) {
m--;
list.add(m + "&" + n);
janM(m, n, i, j, a, b,list);
} else {
if(isObey){
janN(m, n, i, j, a, b,list);
}else{
i--;
j--;
a++;
b++;
if (m < i || n < j || m > a || n > b) {
jiaN(m, n, i, j, a, b,list);
}
}
}
}
private void janN(int m, int n, int i, int j, int a, int b,List<String> list) {
if (n > b) {
n--;
list.add(m + "&" + n);
janN(m, n, i, j, a, b,list);
} else {
if(isObey){
i--;
j--;
a++;
b++;
if (m < i || n < j || m > a || n > b) {
jiaM(m, n, i, j, a, b,list);
}
}else{
janM(m, n, i, j, a, b,list);
}
}
}
private String FormatButtonText(String targetStr){
int curLength = targetStr.getBytes().length;
if(targetStr!=null && curLength>strLength)
targetStr = SubStringByte(targetStr);
String newString = "";
int cutLength = strLength-targetStr.getBytes().length;
for(int i=0;i<cutLength;i++)
newString +=" ";
return targetStr+newString;
}
private String SubStringByte(String targetStr){
while(targetStr.getBytes().length>strLength)
targetStr = targetStr.substring(0,targetStr.length()-1);
return targetStr;
}
}
分享到:
相关推荐
使用冒泡排序实现的java语言编写的关于二维数组的排序,实现了行、列的排序输出。
主要介绍了java实现二维数组转json的方法,涉及java数组遍历及json格式数据构造相关操作技巧,需要的朋友可以参考下
// 二维数组冒泡排序 public static void main(String[] args) { int i=0, j=0, temp = 0; int[][] nums1 = { { 34, 1, 22, 5 }, { 28, 98, 15, 32 }, { 33, -5, 17, 41 } }; int rows = nums1.length; //二维...
java实现 逆时针打印二维数组
思路以及注意点、说明我都加在了代码旁边的注释里,好好悟悟!
二维数组的排序,其中包含冒泡排序、选择排序、插入排序和快速选择排序。
VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...
java 将一个二维数组存到txt文件里,然后再读取。可运行
1.方便获得一个字符串表示的矩阵 2.删除二维数组中的第几行 3.删除二维数组中与所要删除行内容一样的此行 4.获得此二维数组
JAVA 用二维数组编写的一个扫雷游戏,绝对可以用!界面简洁美观!
主要介绍了C#实现对二维数组排序的方法,实例分析了C#数组遍历与排序的相关技巧,需要的朋友可以参考下
java 二维数组的创建与使用 java 二维数组的创建与使用
关于java动态二维数组的实现 可以参考下
用java实现二维数组的转置,1.输入想要创建的数组的维数M;2.分别输入M行数组元素;3.打印数组;4.数组转置;5.打印转置后的数组
将TXT文件中的数据读进二维数组,并对列数据进行线性插值再以txt文件将数据输出
一维数组转二维数组
52.java二维数组静态初始化.zip52.java二维数组静态初始化.zip52.java二维数组静态初始化.zip52.java二维数组静态初始化.zip52.java二维数组静态初始化.zip52.java二维数组静态初始化.zip52.java二维数组静态初始化....
51.java二维数组动态初始化.zip51.java二维数组动态初始化.zip51.java二维数组动态初始化.zip51.java二维数组动态初始化.zip51.java二维数组动态初始化.zip51.java二维数组动态初始化.zip51.java二维数组动态初始化....
用C++语音实现一维数组二维数组写入txt,从txt中读取数据存到一维数组、二维数组,数组用指针表示