已经入行java一年了,但是天天都在公司做的业务,导致我的基础也在一点点的退步,这两天整理了下数据结构的东西,满套教程,跟大家一起分享下!!
具体代码如下:
//二位数组转稀疏数组
//初始化二维数组 11*11
int [][] charArry = new int[11][11];
charArry[1][2]=1;
charArry[2][3]=2;
charArry[3][5]=1;
System.out.println("输出原始二位数组");
int sum = 0;//sum接收原始二位数组中的有效数据
for(int[]i:charArry){
for(int j:i){
if (j !=0){
sum++;
}
System.out.printf("%d\t",j);
}
System.out.println();
}
System.out.println(sum);
//创建稀疏数组 稀疏数组
// 长为原始数组有效数据数量+1,宽为3 固定值
// 其中第一行记录原始数组的长宽 以及有效数据数量
System.out.println("稀疏数组开始了~~~~~~~");
int [][] sparersArray= new int[sum+1][3];
sparersArray[0][0]= 11;
sparersArray[0][1]= 11;
sparersArray[0][2]= sum;
for(int[]i:sparersArray){
for(int j:i){
System.out.printf("%d\t",j);
}
System.out.println();
}
//遍历原始数组对稀疏数组进行赋值
int count = 0;//记录是第几个有效数据
for (int i = 0; i < charArry.length; i++) {
for (int j = 0; j < charArry[i].length; j++) {
if (charArry[i][j]!=0){
count++;
sparersArray[count][0]= i;
sparersArray[count][1]= j;
sparersArray[count][2]= charArry[i][j];
}
}
}
System.out.println("稀疏数组开始了~~~~~~~~~~~~~~~~~");
for(int[]i:sparersArray){
for(int j:i){
System.out.printf("%d\t",j);
}
System.out.println();
}
//稀疏数组转二维数组
int charArry2 [][] = new int[sparersArray[0][0]][sparersArray[0][1]];
// System.out.println(charArry.length);
for (int i = 1; i < sparersArray.length; i++) {
// sparersArray[i][0];对应的应该是二位数组有效数据的长
// sparersArray[i][1];对应的应该是二位数组有效数据的宽
// sparersArray[i][2];对应的应该是二位数组有效数据的数值
charArry2[sparersArray[i][0]][sparersArray[i][1]] = sparersArray[i][2];
}
System.out.println("稀疏数组转换为二位数组~~~~~~~~~~~");
for(int[]i:charArry2){
for(int j:i){
System.out.printf("%d\t",j);
}
System.out.println();
}
}