介绍
现在的我是研究生二年级下学期,即将迈入校园招聘的门槛。
最近论文的仿真结果出来了,我终于可以腾出手来,学习找工作的事情了。我相信只要花时间,花功夫,一定会成为一名好的程序员的。以我现在的这种程度,我觉得远远没有达到和人家拼天赋的程度,只要我现在你好好的将知识吸收了,代码敲好了,以后才有能力做一些拼天赋的东西。
加油吧,这是我这一个专栏的第一篇文章,所有的代码均为我的手敲代码。将我的代码和仿真结果都会奉上。
java源代码
package Package01;
public class SparseArray {
public static void main(String[] args) {
//1.创建一个原始的二维数组
//2. 1用来表示黑子,2表示蓝字,0表示没有棋子
int[][] chessArr1 = new int[11][11];
chessArr1[1][2] = 1;
chessArr1[2][3] = 1;
//输出原始的数组
// System.out.println("1.利用for循环输出原始矩阵chessArr1:");
for(int i=0; i< chessArr1.length; i++){
for(int j=0; j<chessArr1[i].length; j++){
System.out.print("\t" + chessArr1[i][j]);
}
System.out.println();
}
//
// System.out.println("+++++++++++++++++++++++++++++++++++++++++++++");
// System.out.println("2.利用增强for循环输出矩阵chessArr1:");
// for(int[] cow:chessArr1){
// for(int data:cow){
// System.out.print("\t" + data);
// }
// System.out.println();
// }
//3.先遍历二维数组,看一下有几个有效数据,得到非零数据的个数。sun
int sum = 0;
int cow_Arr1 = 0;
int ran_Arr1 = 0;
for(int[] cow:chessArr1){
cow_Arr1++;
ran_Arr1 = 0; //没有这一句的话,将会每一次都执行,导致11*11的结果;有这一句的话,将会
for(int data:cow){
ran_Arr1++;
if(data!=0){
sum++;
}
}
}
System.out.println();
// System.out.println("不为零的个数sum:\t" + sum); //不仅可以有四个空格功能,还可以和下一列进行对齐的功能
// System.out.println("行数cow_Arr1:\t" + cow_Arr1);
// System.out.println("列数ran_Arr1:\t" + ran_Arr1);
//4.创建稀疏数组,将数组存放在稀疏矩阵里面
int sparseArr1[][] = new int[sum+1][3];
sparseArr1[0][0] = ran_Arr1;
sparseArr1[0][1] = cow_Arr1;
sparseArr1[0][2] = sum;
int cow_sparse = 1;
for (int i=1; i<chessArr1.length;i++){
for(int j=0; j<chessArr1[i].length;j++){
if(chessArr1[i][j]!=0){
sparseArr1[cow_sparse][0]=i;
sparseArr1[cow_sparse][1]=j;
sparseArr1[cow_sparse][2]=chessArr1[i][j];
cow_sparse++;
}
}
}
//5.输出sparseArr1数组
System.out.println();
System.out.println("输出稀疏矩阵:");
for(int i=0;i<sparseArr1.length;i++){
for(int j=0;j<sparseArr1[i].length;j++){
System.out.print("\t" + sparseArr1[i][j]);
}
System.out.println();
}
//6.将稀疏数组转换为二维矩阵
int[][] chessArr2 = new int[sparseArr1[0][0]][sparseArr1[0][1]];
for(int x=1; x<sparseArr1.length; x++){
chessArr2[sparseArr1[x][0]][sparseArr1[x][1]] = sparseArr1[x][2];
}
//7.输出将稀疏矩阵转换为二维矩阵后的矩阵
System.out.println();
System.out.println("将稀疏矩阵转换成二维数组后的矩阵");
for(int i=0; i<chessArr2.length; i++ ){
for (int j=0; j<chessArr2[i].length; j++){
System.out.print("\t" + chessArr2[i][j]);
}
System.out.println();
}
}
}
输出结果
"C:\Program Files\Java\jdk1.8.0_162\bin\java.exe" "-javaagent:D:\software install in d (professional)\software\idea\IntelliJ IDEA 2021.2.3\lib\idea_rt.jar=59338:D:\software install in d (professional)\software\idea\IntelliJ IDEA 2021.2.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\java\jdk1.8.0_162\jre\lib\charsets.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\deploy.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\access-bridge-64.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\cldrdata.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\dnsns.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\jaccess.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\jfxrt.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\localedata.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\nashorn.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\sunec.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\sunjce_provider.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\sunmscapi.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\sunpkcs11.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\ext\zipfs.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\javaws.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\jce.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\jfr.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\jfxswt.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\jsse.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\management-agent.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\plugin.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\resources.jar;C:\Program Files\java\jdk1.8.0_162\jre\lib\rt.jar;C:\Users\Administrator\Desktop\code\java\20220227\out\production\Modulate07" Package01.SparseArray
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
输出稀疏矩阵:
11 11 2
1 2 1
2 3 1
将稀疏矩阵转换成二维数组后的矩阵
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
Process finished with exit code 0
python代码 (jupyter上写的):
import numpy as np
#可以用来计算原始矩阵的不为0的个数
def sum(Array):
s = 0
for i in range(Array.shape[0]):
for j in range(Array.shape[1]):
if Array[i][j]!=0:
s = s+1
return s
#将arr矩阵里面的非零位置存放在列表里安
def none_list(Array):
cow = 0
li = []
li0 = []
for i in range(Array.shape[0]):
ran = 0
cow = cow+1
for j in range(Array.shape[1]):
ran = ran+1
if Array[i][j]!=0:
li0 = [cow,ran]
li.append(li0)
return np.array(li)
#稀疏矩阵除了第一行外,将剩余的不为零的地方进行替换
def sparse_change(Array,sparse):
for i in range(sum(Array)):
sparse [i+1][0] = none_list(Array)[i][0]
sparse [i+1][1] = none_list(Array)[i][1]
sparse [i+1][2] = Array[none_list(Array)[i][0]-1][none_list(Array)[i][1]-1]
return sparse
#初始化一个数组,arr为原始数组
arr = np.zeros((11,11),dtype = int)
arr[1][2] = arr[2][3] = 1
#初始化稀疏数组,sparseArray为稀疏数组,并对稀疏数组的第一行进行初始化
sparseArray = np.zeros((sum(arr)+1,3),dtype=int)
sparseArray[0][0] = arr.shape[0]
sparseArray[0][1] = arr.shape[1]
sparseArray[0][2] = sum(arr)
#将稀疏数组的其他行进行初始化
sparseArray = sparse_change(arr,sparseArray)
print(arr)
print()
print(sparseArray)
[[0 0 0 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0 0]
[0 0 0 1 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]]
[[11 11 2]
[ 2 3 1]
[ 3 4 1]]