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;
}
}
分享到:
相关推荐
对于二维数组的排序,通常的做法是先将其转换为一维数组,然后再利用冒泡排序对一维数组进行排序,最后再将排序后的一维数组还原为二维数组。这种方法不仅易于理解和实现,而且能够充分利用已有的排序算法。 1. **...
使用冒泡排序实现的java语言编写的关于二维数组的排序,实现了行、列的排序输出。
在Java编程中,将二维数组转换为JSON格式的数据是常见的数据处理需求,特别是在处理Web服务或数据交换时。本文将详细讲解如何使用Java实现这一功能,以及涉及的相关操作技巧。 首先,我们需要理解二维数组和JSON的...
文中提供的代码提供了一种解决方案,它首先将二维数组转换为`DataTable`对象,利用`DataTable`的排序功能,然后将排序后的结果反向映射回二维数组。 这段代码定义了一个名为`Sort<T>`的静态方法,接受三个参数: 1....
// 二维数组冒泡排序 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; //二维...
在LabVIEW中,二维数组是数据处理和分析中常见的数据结构。它由多个一维数组按行或列堆叠而成,可以表示表格或其他多维数据。本教程将深入探讨如何在LabVIEW中对二维数组进行排序,这在处理实验数据、进行算法分析或...
在Java编程中,将二维数组转换为JSON对象是一项常见的任务,特别是在处理表格数据或结构化信息时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它...
java实现 逆时针打印二维数组
1.方便获得一个字符串表示的矩阵 2.删除二维数组中的第几行 3.删除二维数组中与所要删除行内容一样的此行 4.获得此二维数组
4. **生成新数据**:将插值后的值插入到原有的二维数组中,创建一个新的二维数组。 5. **写入TXT文件**:使用编程语言提供的功能,将更新后的二维数组以TXT格式写回文件。可以设定合适的输出格式,如逗号分隔值(CSV...
二维数组的排序,其中包含冒泡排序、选择排序、插入排序和快速选择排序。
VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...
在Java编程语言中,二维数组可以被用来模拟简单的Map数据结构。Map是一种键值对的集合,其中每个键(Key)都是唯一的,并且与一个值(Value)相关联。尽管Java提供了内置的Map接口(如HashMap、TreeMap等),但有时...
JAVA 用二维数组编写的一个扫雷游戏,绝对可以用!界面简洁美观!
### Java二维数组的理解 在Java中,二维数组是一种特殊的数组结构,它由多个一维数组组成,形成一个矩阵形式的数据结构。本篇文章旨在深入解析Java二维数组的基本概念、定义方式、初始化过程及其常见操作,同时重点...
例如,如果你有一个C++函数接收二维数组并返回二维数组,你可以这样在Java中定义: ```java public interface MyDLL extends Library { // 定义C++函数原型 int processArray(int[][] input, int[][] output); } ...
本教程将重点讲解如何使用C++将一维和二维数组的数据写入文本文件(txt),以及如何从txt文件中读取数据并存储到一维和二维数组中。数组在C++中是基本的数据结构,而指针则为动态操作提供了便利。以下是一些关键知识...
关于java动态二维数组的实现 可以参考下
用java实现二维数组的转置,1.输入想要创建的数组的维数M;2.分别输入M行数组元素;3.打印数组;4.数组转置;5.打印转置后的数组