This Java Program is to Implement Sparse Matrix.In the subfield of numerical analysis, a sparse matrix is a matrix populated primarily with zeros (Stoer & Bulirsch 2002, p. 619) as elements of the table. By contrast, if a larger number of elements differ from zero, then it is common to refer to the matrix as a dense matrix. The fraction of zero elements (non-zero elements) in a matrix is called the sparsity (density).
Here is the source code of the Java Program to Implement Sparse Matrix. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
public class SparseMatrix
{
private int N;
private SparseArray sparsearray[];
public SparseMatrix(int N)
{
this.N = N;
sparsearray = new SparseArray[N];
for (int index = 0; index < N; index++)
{
sparsearray[index] = new SparseArray(N);
}
}
public void store(int rowindex, int colindex, Object value)
{
if (rowindex < 0 || rowindex > N)
throw new RuntimeException("row index out of bounds");
if (colindex < 0 || colindex > N)
throw new RuntimeException("col index out of bounds");
sparsearray[rowindex].store(colindex, value);
}
public Object get(int rowindex, int colindex)
{
if (rowindex < 0 || colindex > N)
throw new RuntimeException("row index out of bounds");
if (rowindex < 0 || colindex > N)
throw new RuntimeException("col index out of bounds");
return (sparsearray[rowindex].fetch(colindex));
}
public static void main(String... arg)
{
Integer[][] iarray = new Integer[3][3];
iarray[0][0] = 1;
iarray[0][1] = null;
iarray[0][2] = 2;
iarray[1][0] = null;
iarray[1][1] = 3;
iarray[1][2] = null;
iarray[2][0] = 4;
iarray[2][1] = 6;
iarray[2][2] = null;
SparseMatrix sparseMatrix = new SparseMatrix(3);
for (int rowindex = 0; rowindex < 3; rowindex++)
{
for (int colindex = 0; colindex < 3; colindex++)
{
sparseMatrix.store(rowindex, colindex,
iarray[rowindex][colindex]);
}
}
System.out.println("the sparse Matrix is ");
for (int rowindex = 0; rowindex < 3; rowindex++)
{
for (int colindex = 0; colindex < 3; colindex++)
{
System.out.print(sparseMatrix.get(rowindex, colindex) + "\t");
}
System.out.println();
}
}
}
class List
{
private int index;
private Object value;
private List nextindex;
public List(int index)
{
this.index = index;
nextindex = null;
value = null;
}
public List()
{
index = -1;
value = null;
nextindex = null;
}
public void store(int index, Object value)
{
List current = this;
List previous = null;
List node = new List(index);
node.value = value;
while (current != null && current.index < index)
{
previous = current;
current = current.nextindex;
}
if (current == null)
{
previous.nextindex = node;
}
else
{
if (current.index == index)
{
System.out.println("DUPLICATE INDEX");
return;
}
previous.nextindex = node;
node.nextindex = current;
}
return;
}
public Object fetch(int index)
{
List current = this;
Object value = null;
while (current != null && current.index != index)
{
current = current.nextindex;
}
if (current != null)
{
value = current.value;
}
else
{
value = null;
}
return value;
}
public int elementCount()
{
int elementCount = 0;
for (List current = this.nextindex; (current != null); current = current.nextindex)
{
elementCount++;
}
return elementCount;
}
}
public class SparseArray
{
private List start;
private int index;
SparseArray(int index)
{
start = new List();
this.index = index;
}
public void store(int index, Object value)
{
if (index >= 0 && index < this.index)
{
if (value != null)
start.store(index, value);
} else
{
System.out.println("INDEX OUT OF BOUNDS");
}
}
public Object fetch(int index)
{
if (index >= 0 && index < this.index)
return start.fetch(index);
else
{
System.out.println("INDEX OUT OF BOUNDS");
return null;
}
}
public int elementCount()
{
return start.elementCount();
}
}
$javac SparseMatrix.java $java SparseMatrix the sparse Matrix is 1 null 2 null 3 null 4 6 null
Related posts:
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Spring Boot - Web Socket
Jackson vs Gson
Automatic Property Expansion with Spring Boot
Finding the Differences Between Two Lists in Java
Java Program to Implement the Vigenere Cypher
Java Program to Perform Finite State Automaton based Search
Comparing Long Values in Java
Generic Constructors in Java
Guide to the Fork/Join Framework in Java
Hướng dẫn sử dụng Lớp FilePermission trong java
Concurrent Test Execution in Spring 5
Reversing a Linked List in Java
Java Program to Implement Hash Tables
Spring Boot Application as a Service
Handle EML file with JavaMail
Java Program to Implement Direct Addressing Tables
Apache Commons Collections OrderedMap
Java Program to Perform Insertion in a BST
Java Optional as Return Type
A Guide to ConcurrentMap
Java – Random Long, Float, Integer and Double
Extract network card address
Guide to Dynamic Tests in Junit 5
Spring Cloud Series – The Gateway Pattern
So sánh HashMap và HashSet trong Java
Java List UnsupportedOperationException
The Order of Tests in JUnit
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
Câu lệnh điều khiển vòng lặp trong Java (break, continue)
Java Program to Implement Find all Forward Edges in a Graph
Java equals() and hashCode() Contracts