当前位置:网站首页>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();
}
边栏推荐
- Image editor for their AutoLayout environment
- Pl/sql basic case
- 多家呼吸机巨头产品近期被一级召回 呼吸机市场仍在增量竞争
- [Yugong series] go teaching course in July 2022 004 go code Notes
- What about data leakage? " Watson k'7 moves to eliminate security threats
- ICMP introduction
- Index optimization of performance tuning methodology
- 他们主动布局(autolayout)环境的图像编辑器
- CA certificate trampled pit
- 从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
猜你喜欢
Matlab draws a cute fat doll
Leetcode simple question: find the nearest point with the same X or Y coordinate
MySQL actual combat 45 lecture learning (I)
Serializability of concurrent scheduling
Cobaltstrike builds an intranet tunnel
Leetcode simple question: the minimum cost of buying candy at a discount
Business learning of mall order module
A number of ventilator giants' products have been recalled recently, and the ventilator market is still in incremental competition
AD637使用笔记
Decorator learning 01
随机推荐
The solution to the problem that Oracle hugepages are not used, causing the server to be too laggy
Kubernetes Administrator certification (CKA) exam notes (IV)
了解 Android Kotlin 中 DataStore 的基本概念以及为什么应该停止在 Android 中使用 SharedPreferences
Matlab draws a cute fat doll
NET中小型企业项目开发框架系列(一个)
Net small and medium-sized enterprise project development framework series (one)
Two stage locking protocol for concurrency control
Multiplexing of Oracle control files
The difference between MVVM and MVC
MySQL actual combat 45 lecture learning (I)
Did you brush the real title of the blue bridge cup over the years? Come here and teach you to counter attack!
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
元宇宙中的三大“派系”
Dbeaver executes multiple insert into error processing at the same time
Pl/sql basic case
Summary of concurrency control
Business learning of mall order module
ICMP 介绍
POJ 3237 tree (tree chain splitting)
Getting started with microservices (resttemplate, Eureka, Nacos, feign, gateway)