当前位置:网站首页>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();
}边栏推荐
- Advantages and disadvantages of the "Chris Richardson microservice series" microservice architecture
- The statistics of leetcode simple question is the public string that has appeared once
- Oracle advanced query
- DataGrid directly edits and saves "design defects"
- MySQL actual combat 45 lecture learning (I)
- "Chris Richardson microservices series" uses API gateway to build microservices
- The Blue Bridge Cup web application development simulation competition is open for the first time! Contestants fast forward!
- ICMP 介绍
- Hysbz 2243 staining (tree chain splitting)
- Summary of concurrency control
猜你喜欢

Decorator learning 01

Shell script, awk uses if, for process control

Reptile practice

Matlab draws a cute fat doll

Dbeaver executes multiple insert into error processing at the same time

Granularity of blocking of concurrency control

Implementation technology of recovery

A number of ventilator giants' products have been recalled recently, and the ventilator market is still in incremental competition

【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用

Huawei cloud modelarts text classification - takeout comments
随机推荐
EBS Oracle 11g cloning steps (single node)
What changes has Web3 brought to the Internet?
K210学习笔记(四) K210同时运行多个模型
Platform bus
阿龙的感悟
Net small and medium-sized enterprise project development framework series (one)
Common interview questions of redis factory
Sub total of Pico development
poj 3237 Tree(树链拆分)
如何向mongoDB中添加新的字段附代码(全)
Leetcode simple question: the minimum cost of buying candy at a discount
Matlab draws a cute fat doll
Performance monitoring of database tuning solutions
Three "factions" in the metauniverse
Database recovery strategy
实战:fabric 用户证书吊销操作流程
Summary of El and JSTL precautions
2022-07-05: given an array, you want to query the maximum value in any range at any time. If it is only established according to the initial array and has not been modified in the future, the RMQ meth
Talking about MySQL index
Serializability of concurrent scheduling