`
songdiantao
  • 浏览: 19245 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 将二维数组顺时针,逆时针排序

阅读更多
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;
}



}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics