当前位置:网站首页>Sparse array [matrix]
Sparse array [matrix]
2022-07-05 22:14:00 【Cc824 constant】
Sparse array
- first line : Record the original array, which has several rows and columns , Several different values
- Residual downlink : Record the rows, columns and values of elements with different values in an array , To reduce the size of the program

Two dimensional array turn The idea of sparse array
1. Traverse Original two-dimensional array , Get the number of valid data sum
2. according to sum establish Sparse array sparseArr int[sum+1][3] 3 It must be the same
3. Store the valid data of the two-dimensional array into the sparse array
Sparse array to original two-dimensional array idea
1. First read the first two data in the first row of the sparse array Create the original two-dimensional array
2. Read the data of the last few rows of the sparse array And assign it to the original array
public class T1 {
public static void main(String[] args) {
// Compress a two-dimensional array into a sparse array
//1. Create a 2D array
int chessArr[][] = new int[11][11];
chessArr[1][2] = 1;
chessArr[2][3] = 2;
int sum = 0;
//2. Get the number of valid data
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++)
if (chessArr[i][j] != 0)
sum++;
}
//3. Create a sparse array
int spareArr[][] = new int[sum+1][3];
spareArr[0][0] = 11;
spareArr[0][1] = 11;
spareArr[0][2] = sum;
//4. assignment
int count = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (chessArr[i][j] != 0){
count++;
spareArr[count][0] = i ;
spareArr[count][1] = j ;
spareArr[count][2] = chessArr[i][j] ;
}
}
}
System.out.println(" Output sparse array ");
for (int i=0;i<spareArr.length;i++)
System.out.printf("%d\t%d\t%d\t\n",spareArr[i][0],spareArr[i][1],spareArr[i][2]);
System.out.println("==============");
// Sparse array to two-dimensional array
//1. Read the first two data of the first row of the sparse array , Then create a new two-dimensional array
int chessArr1[][] = new int[spareArr[0][0]][spareArr[0][1]];
//2. Traverse the second row of the sparse array, followed by , Then assign a value to a two-dimensional array
for (int i = 1;i< spareArr.length;i++){
chessArr1[spareArr[i][0]][spareArr[i][1]] = spareArr[i][2];
}
//3. Output two-dimensional array
for (int[] row : chessArr1){
for (int data :row){
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}
Save sparse arrays to disk , And restore 【 New function 】
Save sparse array
// Read to disk
// Get file object
File file = new File("E:\\map.data");
// File write stream
FileWriter writer = new FileWriter(file);
// Traversal array , write file
for (int[] sparse:sparseArr) {
for (int s:sparse) {
writer.write(s+"\t");
}
writer.write("\n");
}
writer.close();Restore sparse array
// Read data from disk
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
int[][] chessArr2 = null;
int row = 0;
// Loop through every line of the file
while ((line=reader.readLine())!=null){
// Press tab Bits are cut into string arrays , And then to int Array
String[] temp = line.split("\t");
int[] ints = new int[temp.length];
for (int i = 0; i < ints.length; i++) {
ints[i] = Integer.parseInt(temp[i]);
}
row++;
// The first line of the document , That is, the first row of the sparse array , Is the length and width of the original array
if (row==1){
chessArr2 = new int[ints[0]][ints[1]];
}else{
// Add the rest , Where there is no assignment , The array will be initialized to 0
chessArr2[ints[0]][ints[1]] = ints[2];
}
}
reader.close();
}边栏推荐
- What if win11 is missing a DLL file? Win11 system cannot find DLL file repair method
- Getting started with microservices (resttemplate, Eureka, Nacos, feign, gateway)
- Serializability of concurrent scheduling
- Storage optimization of performance tuning methodology
- 等到产业互联网时代真正发展成熟,我们将会看待一系列的新产业巨头的出现
- Talking about MySQL index
- 元宇宙中的三大“派系”
- DataGrid directly edits and saves "design defects"
- Two stage locking protocol for concurrency control
- 【愚公系列】2022年7月 Go教学课程 004-Go代码注释
猜你喜欢

Oracle advanced query

Calculation method of boundary IOU

Shell script, awk condition judgment and logic comparison &||

元宇宙中的三大“派系”

Lightweight dynamic monitorable thread pool based on configuration center - dynamictp

ICMP introduction

Getting started with microservices (resttemplate, Eureka, Nacos, feign, gateway)

How can Bluetooth in notebook computer be used to connect headphones

Storage optimization of performance tuning methodology

笔记本电脑蓝牙怎么用来连接耳机
随机推荐
Microservice link risk analysis
A trip to Suzhou during the Dragon Boat Festival holiday
Alternating merging strings of leetcode simple questions
Net small and medium-sized enterprise project development framework series (one)
Common interview questions of redis factory
Business learning of mall commodity module
Leetcode simple question ring and rod
Advantages and disadvantages of the "Chris Richardson microservice series" microservice architecture
Overview of concurrency control
MySQL disconnection reports an error MySQL ldb_ exceptions. OperationalError 4031, The client was disconnected by the server
C language knowledge points link
Meituan dynamic thread pool practice ideas, open source
AD637使用笔记
等到产业互联网时代真正发展成熟,我们将会看待一系列的新产业巨头的出现
The simple problem of leetcode is to split a string into several groups of length K
装饰器学习01
boundary IoU 的计算方式
数据泄露怎么办?'华生·K'7招消灭安全威胁
CRM creates its own custom report based on fetch
元宇宙中的三大“派系”