From 0674ad4bb1578f17885d7bd8404f15ae07039c97 Mon Sep 17 00:00:00 2001 From: Swarali Bhalerao <75970656+Swarali-31@users.noreply.github.com> Date: Sun, 13 Oct 2024 03:14:08 +0530 Subject: [PATCH 1/3] Update Sparsity.java Tried to make it more optimised. --- .../java/com/thealgorithms/misc/Sparsity.java | 53 ++++++------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/thealgorithms/misc/Sparsity.java b/src/main/java/com/thealgorithms/misc/Sparsity.java index cae2fbdead94..426a63a7a926 100644 --- a/src/main/java/com/thealgorithms/misc/Sparsity.java +++ b/src/main/java/com/thealgorithms/misc/Sparsity.java @@ -1,56 +1,35 @@ -package com.thealgorithms.misc; - import java.util.Scanner; -/* - *A matrix is sparse if many of its coefficients are zero (In general if 2/3rd of matrix elements - *are 0, it is considered as sparse). The interest in sparsity arises because its exploitation can - *lead to enormous computational savings and because many large matrix problems that occur in - *practice are sparse. - * - * @author Ojasva Jain - */ - -final class Sparsity { - private Sparsity() { +final class sparse { + private sparse() { } - /* - * @return Sparsity of matrix - * - * where sparsity = number of zeroes/total elements in matrix - * - */ - static double sparsity(double[][] mat) { - int zero = 0; - // Traversing the matrix to count number of zeroes - for (int i = 0; i < mat.length; i++) { - for (int j = 0; j < mat[i].length; j++) { - if (mat[i][j] == 0) { - zero++; - } - } - } - // return sparsity - return ((double) zero / (mat.length * mat[1].length)); + static double sparsity(int[][] mat, int rows, int cols, int zero) { + int size = rows * cols; + return (double) zero / size; } - // Driver method public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Enter number of rows in matrix: "); int n = in.nextInt(); - System.out.println("Enter number of Columns in matrix: "); + System.out.println("Enter number of columns in matrix: "); int m = in.nextInt(); + int[][] mat = new int[n][m]; + int count = 0; // Counter for zeros + System.out.println("Enter Matrix elements: "); - double[][] mat = new double[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { - mat[i][j] = in.nextDouble(); + mat[i][j] = in.nextInt(); + if (mat[i][j] == 0) { + count++; // Increment zero count directly + } } } - System.out.println("Sparsity of matrix is: " + sparsity(mat)); - in.close(); + + double sparsityValue = sparsity(mat, n, m, count); + System.out.println("Sparsity of the matrix is: " + sparsityValue); } } From d817935ce8cb6d729792cbb1a453b911b8f4fadc Mon Sep 17 00:00:00 2001 From: Swarali Bhalerao <75970656+Swarali-31@users.noreply.github.com> Date: Sun, 13 Oct 2024 03:25:39 +0530 Subject: [PATCH 2/3] Update Sparsity.java --- .../java/com/thealgorithms/misc/Sparsity.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/thealgorithms/misc/Sparsity.java b/src/main/java/com/thealgorithms/misc/Sparsity.java index 426a63a7a926..585e97cfc60e 100644 --- a/src/main/java/com/thealgorithms/misc/Sparsity.java +++ b/src/main/java/com/thealgorithms/misc/Sparsity.java @@ -1,7 +1,7 @@ import java.util.Scanner; -final class sparse { - private sparse() { +final class Sparse { + private Sparse() { } static double sparsity(int[][] mat, int rows, int cols, int zero) { @@ -10,26 +10,28 @@ static double sparsity(int[][] mat, int rows, int cols, int zero) { } public static void main(String[] args) { - Scanner in = new Scanner(System.in); - System.out.println("Enter number of rows in matrix: "); - int n = in.nextInt(); - System.out.println("Enter number of columns in matrix: "); - int m = in.nextInt(); + Scanner in = new Scanner(System.in); // Initialize Scanner + try { + System.out.println("Enter number of rows in matrix: "); + int n = in.nextInt(); + System.out.println("Enter number of columns in matrix: "); + int m = in.nextInt(); - int[][] mat = new int[n][m]; - int count = 0; // Counter for zeros + int[][] mat = new int[n][m]; + int count = 0; // Counter for zeros - System.out.println("Enter Matrix elements: "); - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - mat[i][j] = in.nextInt(); - if (mat[i][j] == 0) { - count++; // Increment zero count directly + System.out.println("Enter Matrix elements: "); + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + mat[i][j] = in.nextInt(); + if (mat[i][j] == 0) { + count++; // Increment zero count directly + } } } - } - double sparsityValue = sparsity(mat, n, m, count); - System.out.println("Sparsity of the matrix is: " + sparsityValue); + double sparsityValue = sparsity(mat, n, m, count); + System.out.println("Sparsity of the matrix is: " + sparsityValue); + } } } From f7240b5a871f7f2e25511bf4647965213879c36d Mon Sep 17 00:00:00 2001 From: Swarali Bhalerao <75970656+Swarali-31@users.noreply.github.com> Date: Sun, 13 Oct 2024 12:20:19 +0530 Subject: [PATCH 3/3] Update Sparsity.java Added the unit test and removed the main method. --- .../java/com/thealgorithms/misc/Sparsity.java | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/thealgorithms/misc/Sparsity.java b/src/main/java/com/thealgorithms/misc/Sparsity.java index 585e97cfc60e..79fc44cde3c8 100644 --- a/src/main/java/com/thealgorithms/misc/Sparsity.java +++ b/src/main/java/com/thealgorithms/misc/Sparsity.java @@ -1,37 +1,35 @@ -import java.util.Scanner; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; -final class Sparse { - private Sparse() { - } - - static double sparsity(int[][] mat, int rows, int cols, int zero) { - int size = rows * cols; - return (double) zero / size; - } - - public static void main(String[] args) { - Scanner in = new Scanner(System.in); // Initialize Scanner - try { - System.out.println("Enter number of rows in matrix: "); - int n = in.nextInt(); - System.out.println("Enter number of columns in matrix: "); - int m = in.nextInt(); +public class SparseTest { - int[][] mat = new int[n][m]; - int count = 0; // Counter for zeros + @Test + public void testSparsity() { + // Test case 1: 2x2 matrix with 2 zeroes + int[][] mat1 = { + {0, 1}, + {2, 0} + }; + int zeroCount1 = 2; + double expectedSparsity1 = 0.5; + assertEquals(expectedSparsity1, Sparse.sparsity(mat1, 2, 2, zeroCount1), 0.0001); - System.out.println("Enter Matrix elements: "); - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - mat[i][j] = in.nextInt(); - if (mat[i][j] == 0) { - count++; // Increment zero count directly - } - } - } + // Test case 2: 3x3 matrix with 5 zeroes + int[][] mat2 = { + {0, 1, 0}, + {2, 0, 3}, + {0, 0, 0} + }; + int zeroCount2 = 5; + double expectedSparsity2 = 5.0 / 9.0; + assertEquals(expectedSparsity2, Sparse.sparsity(mat2, 3, 3, zeroCount2), 0.0001); - double sparsityValue = sparsity(mat, n, m, count); - System.out.println("Sparsity of the matrix is: " + sparsityValue); - } + // Test case 3: 1x1 matrix with no zeroes + int[][] mat3 = { + {5} + }; + int zeroCount3 = 0; + double expectedSparsity3 = 0.0; + assertEquals(expectedSparsity3, Sparse.sparsity(mat3, 1, 1, zeroCount3), 0.0001); } }