diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 7b319b78d4d7..bcea8e797ffb 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,8 +1,8 @@ # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/java/.devcontainer/base.Dockerfile # [Choice] Java version (use -bullseye variants on local arm64/Apple Silicon): 11, 17, 11-bullseye, 17-bullseye, 11-buster, 17-buster -ARG VARIANT="17-bullseye" -FROM mcr.microsoft.com/vscode/devcontainers/java:0-${VARIANT} +ARG VARIANT="21-bullseye" +FROM mcr.microsoft.com/vscode/devcontainers/java:1.1.0-${VARIANT} # [Option] Install Maven ARG INSTALL_MAVEN="false" diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3994bec79ef8..fdc7cdbd25f9 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,7 +8,7 @@ // Update the VARIANT arg to pick a Java version: 11, 17 // Append -bullseye or -buster to pin to an OS version. // Use the -bullseye variants on local arm64/Apple Silicon. - "VARIANT": "17-bullseye", + "VARIANT": "21-bullseye", // Options "INSTALL_MAVEN": "true", "INSTALL_GRADLE": "true", diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e568006bd634..2e5622f7b51d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,4 +10,9 @@ updates: directory: "/.github/workflows/" schedule: interval: "daily" + + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "daily" ... diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e725dfa74904..14a4ce5fe0f5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,14 +1,37 @@ name: Build on: [push, pull_request] + jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Set up JDK 17 + - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 17 + java-version: 21 distribution: 'adopt' - name: Build with Maven run: mvn --batch-mode --update-snapshots verify + - name: Upload coverage to codecov (tokenless) + if: >- + github.event_name == 'pull_request' && + github.event.pull_request.head.repo.full_name != github.repository + uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: true + - name: Upload coverage to codecov (with token) + if: > + github.repository == 'TheAlgorithms/Java' && + (github.event_name != 'pull_request' || + github.event.pull_request.head.repo.full_name == github.repository) + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true + - name: Checkstyle + run: mvn checkstyle:check + - name: SpotBugs + run: mvn spotbugs:check + - name: PMD + run: mvn pmd:check diff --git a/.github/workflows/clang-format-lint.yml b/.github/workflows/clang-format-lint.yml index 90c0550dc31b..7f3cb3d5162f 100644 --- a/.github/workflows/clang-format-lint.yml +++ b/.github/workflows/clang-format-lint.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: DoozyX/clang-format-lint-action@v0.16.2 + - uses: DoozyX/clang-format-lint-action@v0.17 with: source: './src' extensions: 'java' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f447eb954550..ff76b1af452a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -26,10 +26,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Set up JDK 17 + - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 17 + java-version: 21 distribution: 'adopt' - name: Initialize CodeQL diff --git a/.gitpod.dockerfile b/.gitpod.dockerfile index e10a44af6132..82696623f953 100644 --- a/.gitpod.dockerfile +++ b/.gitpod.dockerfile @@ -1,4 +1,4 @@ -FROM gitpod/workspace-java-17:2023-08-30-14-07-38 +FROM gitpod/workspace-java-21:2024-06-03-17-43-12 ENV LLVM_SCRIPT="tmp_llvm.sh" @@ -11,7 +11,7 @@ USER root RUN ./"$LLVM_SCRIPT" 16 \ && apt-get update \ && apt-get install -y --no-install-recommends \ - clang-format-16=1:16.0.6~++20230710042027+7cbf1a259152-1~exp1~20230710162048.105 \ + clang-format-16=1:16.0.6~++20231112100510+7cbf1a259152-1~exp1~20231112100554.106 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* diff --git a/DIRECTORY.md b/DIRECTORY.md index a75b521341fc..c8b38bb20343 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -15,6 +15,7 @@ * [MazeRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/MazeRecursion.java) * [MColoring](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/MColoring.java) * [NQueens](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/NQueens.java) + * [ParenthesesGenerator](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/ParenthesesGenerator.java) * [Permutation](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/Permutation.java) * [PowerSum](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/PowerSum.java) * [WordSearch](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/WordSearch.java) @@ -388,7 +389,7 @@ * [PalindromeSinglyLinkedList](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/PalindromeSinglyLinkedList.java) * [RangeInSortedArray](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/RangeInSortedArray.java) * [Sort012D](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/Sort012D.java) - * [Sparcity](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/Sparcity.java) + * [Sparsity](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/Sparsity.java) * [ThreeSumProblem](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/ThreeSumProblem.java) * [TwoSumProblem](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/TwoSumProblem.java) * [WordBoggle](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/misc/WordBoggle.java) @@ -438,12 +439,11 @@ * [ReturnSubsequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/ReturnSubsequence.java) * [ReverseStackUsingRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/ReverseStackUsingRecursion.java) * [RootPrecision](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/RootPrecision.java) - * [RotateMatriceBy90Degree](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/RotateMatriceBy90Degree.java) + * [RotateMatrixBy90Degrees](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/RotateMatrixBy90Degrees.java) * [SieveOfEratosthenes](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/SieveOfEratosthenes.java) * [SkylineProblem](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/SkylineProblem.java) * [StringMatchFiniteAutomata](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java) * [Sudoku](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/Sudoku.java) - * [TopKWords](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/TopKWords.java) * [TowerOfHanoi](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/TowerOfHanoi.java) * [TwoPointers](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/TwoPointers.java) * [Verhoeff](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/others/Verhoeff.java) @@ -577,6 +577,7 @@ * [FloodFillTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/FloodFillTest.java) * [MazeRecursionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/MazeRecursionTest.java) * [MColoringTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/MColoringTest.java) + * [ParenthesesGeneratorTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/ParenthesesGeneratorTest.java) * [PermutationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/PermutationTest.java) * [PowerSumTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/PowerSumTest.java) * [WordSearchTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/backtracking/WordSearchTest.java) @@ -688,6 +689,7 @@ * [KnapsackMemoizationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackMemoizationTest.java) * [KnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackTest.java) * [LevenshteinDistanceTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LevenshteinDistanceTests.java) + * [LongestIncreasingSubsequenceTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequenceTests.java) * [MinimumPathSumTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/MinimumPathSumTest.java) * [MinimumSumPartitionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/MinimumSumPartitionTest.java) * [OptimalJobSchedulingTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/OptimalJobSchedulingTest.java) @@ -728,6 +730,7 @@ * [DigitalRootTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/DigitalRootTest.java) * [DistanceFormulaTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/DistanceFormulaTest.java) * [DudeneyNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/DudeneyNumberTest.java) + * [FactorialRecursionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FactorialRecursionTest.java) * [FactorialTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FactorialTest.java) * [FastInverseSqrtTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java) * [FFTTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FFTTest.java) @@ -760,7 +763,9 @@ * [MillerRabinPrimalityCheckTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/MillerRabinPrimalityCheckTest.java) * [MinValueTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/MinValueTest.java) * [MobiusFunctionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/MobiusFunctionTest.java) + * [ModeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/ModeTest.java) * [NthUglyNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/NthUglyNumberTest.java) + * [NumberOfDigitsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/NumberOfDigitsTest.java) * [PalindromeNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/PalindromeNumberTest.java) * [ParseIntegerTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/ParseIntegerTest.java) * [PascalTriangleTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java) @@ -851,6 +856,7 @@ * [BogoSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BogoSortTest.java) * [BubbleSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BubbleSortTest.java) * [BucketSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/BucketSortTest.java) + * [CircleSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CircleSortTest.java) * [CocktailShakerSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CocktailShakerSortTest.java) * [CombSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/CombSortTest.java) * [DualPivotQuickSortTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/sorts/DualPivotQuickSortTest.java) diff --git a/README.md b/README.md index 16237a32f974..d60d5104c385 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # The Algorithms - Java [![Build](https://github.com/TheAlgorithms/Java/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/TheAlgorithms/Java/actions/workflows/build.yml) +[![codecov](https://codecov.io/gh/TheAlgorithms/Java/graph/badge.svg?token=XAdPyqTIqR)](https://codecov.io/gh/TheAlgorithms/Java) [![Discord chat](https://img.shields.io/discord/808045925556682782.svg?logo=discord&colorB=7289DA&style=flat-square)](https://discord.gg/c7MnfGFGa6) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/TheAlgorithms/Java) diff --git a/checkstyle.xml b/checkstyle.xml new file mode 100644 index 000000000000..5ada9361d03c --- /dev/null +++ b/checkstyle.xml @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pmd-exclude.properties b/pmd-exclude.properties new file mode 100644 index 000000000000..400863992ed0 --- /dev/null +++ b/pmd-exclude.properties @@ -0,0 +1,92 @@ +com.thealgorithms.bitmanipulation.SingleBitOperations=UselessParentheses +com.thealgorithms.ciphers.AffineCipher=UselessParentheses +com.thealgorithms.ciphers.ColumnarTranspositionCipher=UnnecessaryFullyQualifiedName +com.thealgorithms.ciphers.DES=UselessParentheses +com.thealgorithms.ciphers.HillCipher=UselessParentheses +com.thealgorithms.ciphers.RSA=UselessParentheses +com.thealgorithms.conversions.AnyBaseToAnyBase=UselessParentheses +com.thealgorithms.conversions.AnytoAny=UselessParentheses +com.thealgorithms.conversions.HexToOct=UselessParentheses +com.thealgorithms.conversions.IntegerToRoman=UnnecessaryFullyQualifiedName +com.thealgorithms.datastructures.crdt.LWWElementSet=UselessParentheses +com.thealgorithms.datastructures.crdt.Pair=UnusedPrivateField +com.thealgorithms.datastructures.graphs.A_Star=UselessParentheses +com.thealgorithms.datastructures.graphs.AdjacencyMatrixGraph=CollapsibleIfStatements,UnnecessaryFullyQualifiedName,UselessParentheses +com.thealgorithms.datastructures.graphs.BipartiteGrapfDFS=CollapsibleIfStatements +com.thealgorithms.datastructures.graphs.Kruskal=UselessParentheses +com.thealgorithms.datastructures.hashmap.hashing.HashMapCuckooHashing=UselessParentheses +com.thealgorithms.datastructures.heaps.FibonacciHeap=UselessParentheses +com.thealgorithms.datastructures.heaps.HeapElement=UselessParentheses +com.thealgorithms.datastructures.heaps.HeapNode=UselessParentheses +com.thealgorithms.datastructures.lists.DoublyLinkedList=UselessParentheses +com.thealgorithms.datastructures.lists.SearchSinglyLinkedListRecursion=UselessParentheses +com.thealgorithms.datastructures.lists.SinglyLinkedList=UnusedLocalVariable +com.thealgorithms.datastructures.queues.PriorityQueue=UselessParentheses +com.thealgorithms.datastructures.stacks.NodeStack=UnnecessaryFullyQualifiedName,UnusedFormalParameter +com.thealgorithms.datastructures.stacks.StackArray=UselessParentheses +com.thealgorithms.datastructures.trees.CheckBinaryTreeIsValidBST=UselessParentheses +com.thealgorithms.datastructures.trees.SegmentTree=UselessParentheses +com.thealgorithms.devutils.nodes.LargeTreeNode=UselessParentheses +com.thealgorithms.devutils.nodes.SimpleNode=UselessParentheses +com.thealgorithms.devutils.nodes.SimpleTreeNode=UselessParentheses +com.thealgorithms.devutils.nodes.TreeNode=UselessParentheses +com.thealgorithms.divideandconquer.ClosestPair=UnnecessaryFullyQualifiedName,UselessParentheses +com.thealgorithms.divideandconquer.Point=UselessParentheses +com.thealgorithms.dynamicprogramming.MatrixChainMultiplication=UselessParentheses +com.thealgorithms.dynamicprogramming.ShortestSuperSequence=UselessParentheses +com.thealgorithms.dynamicprogramming.UniquePaths=UnnecessarySemicolon +com.thealgorithms.dynamicprogramming.WineProblem=UselessParentheses +com.thealgorithms.maths.BinomialCoefficient=UselessParentheses +com.thealgorithms.maths.Complex=UselessParentheses +com.thealgorithms.maths.DistanceFormulaTest=UnnecessaryFullyQualifiedName +com.thealgorithms.maths.FibonacciJavaStreamsTest=BigIntegerInstantiation +com.thealgorithms.maths.Gaussian=UselessParentheses +com.thealgorithms.maths.GcdSolutionWrapper=UselessParentheses +com.thealgorithms.maths.HeronsFormula=UselessParentheses +com.thealgorithms.maths.KaprekarNumbers=UselessParentheses +com.thealgorithms.maths.KeithNumber=UselessParentheses +com.thealgorithms.maths.LeonardoNumber=UselessParentheses +com.thealgorithms.maths.LinearDiophantineEquationsSolver=UselessParentheses +com.thealgorithms.maths.MatrixUtil=BigIntegerInstantiation,UselessParentheses +com.thealgorithms.maths.RomanNumeralUtil=UselessParentheses +com.thealgorithms.maths.SecondMinMax=UselessParentheses +com.thealgorithms.maths.SecondMinMaxTest=UnnecessaryFullyQualifiedName +com.thealgorithms.maths.StandardDeviation=UselessParentheses +com.thealgorithms.maths.SumOfArithmeticSeries=UselessParentheses +com.thealgorithms.maths.TrinomialTriangle=UselessParentheses +com.thealgorithms.maths.VampireNumber=CollapsibleIfStatements +com.thealgorithms.maths.Volume=UselessParentheses +com.thealgorithms.matrixexponentiation.Fibonacci=UnnecessaryFullyQualifiedName +com.thealgorithms.misc.Sparsity=UselessParentheses +com.thealgorithms.misc.ThreeSumProblem=UselessParentheses +com.thealgorithms.misc.WordBoggle=UselessParentheses +com.thealgorithms.others.CRC16=UselessParentheses +com.thealgorithms.others.Damm=UnnecessaryFullyQualifiedName +com.thealgorithms.others.Luhn=UnnecessaryFullyQualifiedName +com.thealgorithms.others.Mandelbrot=UselessParentheses +com.thealgorithms.others.MaximumSumOfDistinctSubarraysWithLengthK=CollapsibleIfStatements +com.thealgorithms.others.MiniMaxAlgorithm=UselessParentheses +com.thealgorithms.others.PageRank=UselessParentheses +com.thealgorithms.others.PerlinNoise=UselessParentheses +com.thealgorithms.others.QueueUsingTwoStacks=UselessParentheses +com.thealgorithms.others.QueueWithStack=UselessParentheses +com.thealgorithms.others.Trieac=UselessParentheses +com.thealgorithms.others.Verhoeff=UnnecessaryFullyQualifiedName +com.thealgorithms.searches.InterpolationSearch=UselessParentheses +com.thealgorithms.searches.KMPSearch=UselessParentheses +com.thealgorithms.searches.LinearSearchThread=EmptyCatchBlock +com.thealgorithms.searches.RabinKarpAlgorithm=UselessParentheses +com.thealgorithms.sorts.BubbleSortRecursion=UselessParentheses +com.thealgorithms.sorts.CircleSort=EmptyControlStatement +com.thealgorithms.sorts.CombSort=UselessParentheses +com.thealgorithms.sorts.DutchNationalFlagSort=UselessParentheses +com.thealgorithms.sorts.LinkListSort=EmptyControlStatement,UnusedLocalVariable +com.thealgorithms.sorts.MergeSortNoExtraSpace=UselessParentheses +com.thealgorithms.sorts.PigeonholeSort=UselessParentheses +com.thealgorithms.sorts.RadixSort=UselessParentheses +com.thealgorithms.sorts.WiggleSort=UselessParentheses +com.thealgorithms.stacks.PostfixToInfix=UselessParentheses +com.thealgorithms.strings.HorspoolSearch=UnnecessaryFullyQualifiedName,UselessParentheses +com.thealgorithms.strings.MyAtoi=UselessParentheses +com.thealgorithms.strings.Palindrome=UselessParentheses +com.thealgorithms.strings.Solution=CollapsibleIfStatements diff --git a/pom.xml b/pom.xml index 86922e1f0a98..b8fb946eeb5a 100644 --- a/pom.xml +++ b/pom.xml @@ -10,9 +10,9 @@ UTF-8 - 17 - 17 - 3.23.1 + 21 + 21 + 3.26.0 @@ -20,7 +20,7 @@ org.junit junit-bom - 5.8.2 + 5.10.2 pom import @@ -31,7 +31,7 @@ org.junit.jupiter junit-jupiter - 5.9.0 + 5.10.2 test @@ -44,18 +44,18 @@ org.junit.jupiter junit-jupiter-api - 5.9.0 + 5.10.2 test org.apache.commons commons-lang3 - 3.12.0 + 3.14.0 org.apache.commons commons-collections4 - 4.4 + 4.5.0-M1 @@ -63,17 +63,97 @@ maven-surefire-plugin - 2.22.2 + 3.2.5 + + + org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.13.0 + + 21 + 21 + + -Xlint:all + -Xlint:-auxiliaryclass + -Xlint:-rawtypes + -Xlint:-unchecked + -Xlint:-lossy-conversions + -Werror + + + + + org.jacoco + jacoco-maven-plugin + 0.8.12 + + + + prepare-agent + + + + generate-code-coverage-report + test + + report + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.3.1 + + checkstyle.xml + true + true + warning + + + + com.puppycrawl.tools + checkstyle + 10.17.0 + + + + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.5.0 + + spotbugs-exclude.xml + true + + + com.mebigfatguy.fb-contrib + fb-contrib + 7.6.4 + + + com.h3xstream.findsecbugs + findsecbugs-plugin + 1.13.0 + + + + + + org.apache.maven.plugins + maven-pmd-plugin + 3.22.0 - 17 - 17 + true + true + false + pmd-exclude.properties - \ No newline at end of file + diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml new file mode 100644 index 000000000000..f621c84dd4bf --- /dev/null +++ b/spotbugs-exclude.xml @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/thealgorithms/backtracking/AllPathsFromSourceToTarget.java b/src/main/java/com/thealgorithms/backtracking/AllPathsFromSourceToTarget.java index 71bf012d2835..a21f8c05f292 100644 --- a/src/main/java/com/thealgorithms/backtracking/AllPathsFromSourceToTarget.java +++ b/src/main/java/com/thealgorithms/backtracking/AllPathsFromSourceToTarget.java @@ -8,7 +8,8 @@ /**Wikipedia link -> https://en.wikipedia.org/wiki/Shortest_path_problem */ package com.thealgorithms.backtracking; -import java.util.*; +import java.util.ArrayList; +import java.util.List; public class AllPathsFromSourceToTarget { diff --git a/src/main/java/com/thealgorithms/backtracking/ArrayCombination.java b/src/main/java/com/thealgorithms/backtracking/ArrayCombination.java index ed5a0c933226..a0b886e6be8a 100644 --- a/src/main/java/com/thealgorithms/backtracking/ArrayCombination.java +++ b/src/main/java/com/thealgorithms/backtracking/ArrayCombination.java @@ -1,12 +1,15 @@ package com.thealgorithms.backtracking; -import java.util.*; +import java.util.List; +import java.util.TreeSet; /** * Finds all permutations of 1...n of length k * @author TheClerici (git-TheClerici) */ -public class ArrayCombination { +public final class ArrayCombination { + private ArrayCombination() { + } private static int length; /** diff --git a/src/main/java/com/thealgorithms/backtracking/Combination.java b/src/main/java/com/thealgorithms/backtracking/Combination.java index 4b44a46d8595..80c11ce737fa 100644 --- a/src/main/java/com/thealgorithms/backtracking/Combination.java +++ b/src/main/java/com/thealgorithms/backtracking/Combination.java @@ -1,12 +1,17 @@ package com.thealgorithms.backtracking; -import java.util.*; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.TreeSet; /** * Finds all permutations of given array * @author Alan Piao (git-Alan Piao) */ -public class Combination { +public final class Combination { + private Combination() { + } private static int length; diff --git a/src/main/java/com/thealgorithms/backtracking/KnightsTour.java b/src/main/java/com/thealgorithms/backtracking/KnightsTour.java index 27b7f66c1f63..2287b39da385 100644 --- a/src/main/java/com/thealgorithms/backtracking/KnightsTour.java +++ b/src/main/java/com/thealgorithms/backtracking/KnightsTour.java @@ -1,6 +1,8 @@ package com.thealgorithms.backtracking; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; /* * Problem Statement: - @@ -24,10 +26,12 @@ 51 46 55 44 53 4 21 12 */ -public class KnightsTour { +public final class KnightsTour { + private KnightsTour() { + } - private static final int base = 12; - private static final int[][] moves = { + private static final int BASE = 12; + private static final int[][] MOVES = { {1, -2}, {2, -1}, {2, 1}, @@ -41,19 +45,19 @@ public class KnightsTour { private static int total; // total squares in chess public static void main(String[] args) { - grid = new int[base][base]; - total = (base - 4) * (base - 4); + grid = new int[BASE][BASE]; + total = (BASE - 4) * (BASE - 4); - for (int r = 0; r < base; r++) { - for (int c = 0; c < base; c++) { - if (r < 2 || r > base - 3 || c < 2 || c > base - 3) { + for (int r = 0; r < BASE; r++) { + for (int c = 0; c < BASE; c++) { + if (r < 2 || r > BASE - 3 || c < 2 || c > BASE - 3) { grid[r][c] = -1; } } } - int row = 2 + (int) (Math.random() * (base - 4)); - int col = 2 + (int) (Math.random() * (base - 4)); + int row = 2 + (int) (Math.random() * (BASE - 4)); + int col = 2 + (int) (Math.random() * (BASE - 4)); grid[row][col] = 1; @@ -95,7 +99,7 @@ private static boolean solve(int row, int column, int count) { private static List neighbors(int row, int column) { List neighbour = new ArrayList<>(); - for (int[] m : moves) { + for (int[] m : MOVES) { int x = m[0]; int y = m[1]; if (grid[row + y][column + x] == 0) { @@ -109,7 +113,7 @@ private static List neighbors(int row, int column) { // Returns the total count of neighbors private static int countNeighbors(int row, int column) { int num = 0; - for (int[] m : moves) { + for (int[] m : MOVES) { if (grid[row + m[1]][column + m[0]] == 0) { num++; } diff --git a/src/main/java/com/thealgorithms/backtracking/MColoring.java b/src/main/java/com/thealgorithms/backtracking/MColoring.java index 93b17941566a..20c42e59e8a1 100644 --- a/src/main/java/com/thealgorithms/backtracking/MColoring.java +++ b/src/main/java/com/thealgorithms/backtracking/MColoring.java @@ -1,6 +1,10 @@ package com.thealgorithms.backtracking; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Queue; +import java.util.Set; /** * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) @@ -10,7 +14,9 @@ class Node { Set edges = new HashSet(); } -public class MColoring { +public final class MColoring { + private MColoring() { + } static int possiblePaint(ArrayList nodes, int n, int m) { // Create a visited array of n nodes diff --git a/src/main/java/com/thealgorithms/backtracking/MazeRecursion.java b/src/main/java/com/thealgorithms/backtracking/MazeRecursion.java index 23fc0689fd57..f7eae01e449a 100644 --- a/src/main/java/com/thealgorithms/backtracking/MazeRecursion.java +++ b/src/main/java/com/thealgorithms/backtracking/MazeRecursion.java @@ -1,6 +1,8 @@ package com.thealgorithms.backtracking; -public class MazeRecursion { +public final class MazeRecursion { + private MazeRecursion() { + } public static void mazeRecursion() { // First create a 2 dimensions array to mimic a maze map diff --git a/src/main/java/com/thealgorithms/backtracking/NQueens.java b/src/main/java/com/thealgorithms/backtracking/NQueens.java index e40b82915cc9..e21a8bb7174c 100644 --- a/src/main/java/com/thealgorithms/backtracking/NQueens.java +++ b/src/main/java/com/thealgorithms/backtracking/NQueens.java @@ -32,7 +32,9 @@ * queen is not placed safely. If there is no such way then return an empty list * as solution */ -public class NQueens { +public final class NQueens { + private NQueens() { + } public static void main(String[] args) { placeQueens(1); diff --git a/src/main/java/com/thealgorithms/backtracking/ParenthesesGenerator.java b/src/main/java/com/thealgorithms/backtracking/ParenthesesGenerator.java new file mode 100644 index 000000000000..8bbed4106251 --- /dev/null +++ b/src/main/java/com/thealgorithms/backtracking/ParenthesesGenerator.java @@ -0,0 +1,50 @@ +package com.thealgorithms.backtracking; + +import java.util.ArrayList; +import java.util.List; + +/** + * This class generates all valid combinations of parentheses for a given number of pairs using backtracking. + */ +public final class ParenthesesGenerator { + private ParenthesesGenerator() { + } + + /** + * Generates all valid combinations of parentheses for a given number of pairs. + * + * @param n The number of pairs of parentheses. + * @return A list of strings representing valid combinations of parentheses. + * @throws IllegalArgumentException if n is less than 0. + */ + public static List generateParentheses(final int n) { + if (n < 0) { + throw new IllegalArgumentException("The number of pairs of parentheses cannot be nagative"); + } + List result = new ArrayList<>(); + generateParenthesesHelper(result, "", 0, 0, n); + return result; + } + + /** + * Helper function for generating all valid combinations of parentheses recursively. + * + * @param result The list to store valid combinations. + * @param current The current combination being formed. + * @param open The number of open parentheses. + * @param close The number of closed parentheses. + * @param n The total number of pairs of parentheses. + */ + private static void generateParenthesesHelper(List result, final String current, final int open, final int close, final int n) { + if (current.length() == n * 2) { + result.add(current); + return; + } + if (open < n) { + generateParenthesesHelper(result, current + "(", open + 1, close, n); + } + if (close < open) { + generateParenthesesHelper(result, current + ")", open, close + 1, n); + } + } +} diff --git a/src/main/java/com/thealgorithms/backtracking/Permutation.java b/src/main/java/com/thealgorithms/backtracking/Permutation.java index 5d88c846087e..21d26e53980f 100644 --- a/src/main/java/com/thealgorithms/backtracking/Permutation.java +++ b/src/main/java/com/thealgorithms/backtracking/Permutation.java @@ -7,7 +7,9 @@ * Finds all permutations of given array * @author Alan Piao (Git-Alan Piao) */ -public class Permutation { +public final class Permutation { + private Permutation() { + } /** * Find all permutations of given array using backtracking diff --git a/src/main/java/com/thealgorithms/backtracking/PowerSum.java b/src/main/java/com/thealgorithms/backtracking/PowerSum.java index 72af17d48bd4..6617ea326a1c 100644 --- a/src/main/java/com/thealgorithms/backtracking/PowerSum.java +++ b/src/main/java/com/thealgorithms/backtracking/PowerSum.java @@ -8,32 +8,33 @@ */ public class PowerSum { - private int count = 0, sum = 0; + private int count = 0; + private int sum = 0; - public int powSum(int N, int X) { - Sum(N, X, 1); + public int powSum(int n, int x) { + sum(n, x, 1); return count; } // here i is the natural number which will be raised by X and added in sum. - public void Sum(int N, int X, int i) { + public void sum(int n, int x, int i) { // if sum is equal to N that is one of our answer and count is increased. - if (sum == N) { + if (sum == n) { count++; return; } // we will be adding next natural number raised to X only if on adding it in sum the // result is less than N. - else if (sum + power(i, X) <= N) { - sum += power(i, X); - Sum(N, X, i + 1); + else if (sum + power(i, x) <= n) { + sum += power(i, x); + sum(n, x, i + 1); // backtracking and removing the number added last since no possible combination is // there with it. - sum -= power(i, X); + sum -= power(i, x); } - if (power(i, X) < N) { + if (power(i, x) < n) { // calling the sum function with next natural number after backtracking if when it is // raised to X is still less than X. - Sum(N, X, i + 1); + sum(n, x, i + 1); } } diff --git a/src/main/java/com/thealgorithms/backtracking/SubsequenceFinder.java b/src/main/java/com/thealgorithms/backtracking/SubsequenceFinder.java new file mode 100644 index 000000000000..4a159dbfe0b1 --- /dev/null +++ b/src/main/java/com/thealgorithms/backtracking/SubsequenceFinder.java @@ -0,0 +1,54 @@ +package com.thealgorithms.backtracking; + +import java.util.ArrayList; +import java.util.List; + +/** + * Class generates all subsequences for a given list of elements using backtracking + */ +public final class SubsequenceFinder { + private SubsequenceFinder() { + } + + /** + * Find all subsequences of given list using backtracking + * + * @param sequence a list of items on the basis of which we need to generate all subsequences + * @param the type of elements in the array + * @return a list of all subsequences + */ + public static List> generateAll(List sequence) { + List> allSubSequences = new ArrayList<>(); + if (sequence.isEmpty()) { + allSubSequences.add(new ArrayList<>()); + return allSubSequences; + } + List currentSubsequence = new ArrayList<>(); + backtrack(sequence, currentSubsequence, 0, allSubSequences); + return allSubSequences; + } + + /** + * Iterate through each branch of states + * We know that each state has exactly two branching + * It terminates when it reaches the end of the given sequence + * + * @param sequence all elements + * @param currentSubsequence current subsequence + * @param index current index + * @param allSubSequences contains all sequences + * @param the type of elements which we generate + */ + private static void backtrack(List sequence, List currentSubsequence, final int index, List> allSubSequences) { + assert index <= sequence.size(); + if (index == sequence.size()) { + allSubSequences.add(new ArrayList<>(currentSubsequence)); + return; + } + + backtrack(sequence, currentSubsequence, index + 1, allSubSequences); + currentSubsequence.add(sequence.get(index)); + backtrack(sequence, currentSubsequence, index + 1, allSubSequences); + currentSubsequence.removeLast(); + } +} diff --git a/src/main/java/com/thealgorithms/bitmanipulation/HighestSetBit.java b/src/main/java/com/thealgorithms/bitmanipulation/HighestSetBit.java index 398b6bbb67bb..6b53b1aa182b 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/HighestSetBit.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/HighestSetBit.java @@ -12,7 +12,7 @@ public final class HighestSetBit { private HighestSetBit() { } - public final static Optional findHighestSetBit(int num) { + public static Optional findHighestSetBit(int num) { if (num < 0) { throw new IllegalArgumentException("Input cannot be negative"); } diff --git a/src/main/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBit.java b/src/main/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBit.java index dc8a217875f9..b825916a8674 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBit.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBit.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -public class IndexOfRightMostSetBit { +public final class IndexOfRightMostSetBit { + private IndexOfRightMostSetBit() { + } public static int indexOfRightMostSetBit(int n) { if (n == 0) { return -1; // No set bits diff --git a/src/main/java/com/thealgorithms/bitmanipulation/IsEven.java b/src/main/java/com/thealgorithms/bitmanipulation/IsEven.java index b6bdc25fcc2b..09d5383322ff 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/IsEven.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/IsEven.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -public class IsEven { +public final class IsEven { + private IsEven() { + } public static boolean isEven(int number) { return (number & 1) == 0; } diff --git a/src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java b/src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java index d379cb3f0593..54d28d4d22cc 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -public class IsPowerTwo { +public final class IsPowerTwo { + private IsPowerTwo() { + } public static boolean isPowerTwo(int number) { if (number <= 0) { return false; diff --git a/src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java b/src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java index bd4bdb0becae..07476a8b9476 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinder.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -public class NonRepeatingNumberFinder { +public final class NonRepeatingNumberFinder { + private NonRepeatingNumberFinder() { + } public static int findNonRepeatingNumber(int[] arr) { int result = 0; diff --git a/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java b/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java index ed586296776f..8e0946f0eb23 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi */ -public class NumbersDifferentSigns { +public final class NumbersDifferentSigns { + private NumbersDifferentSigns() { + } public static boolean differentSigns(int num1, int num2) { return (num1 ^ num2) < 0; diff --git a/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java b/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java index e9d1ad61996f..e8f2930d3afe 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi */ -public class ReverseBits { +public final class ReverseBits { + private ReverseBits() { + } public static int reverseBits(int n) { int result = 0; diff --git a/src/main/java/com/thealgorithms/ciphers/AES.java b/src/main/java/com/thealgorithms/ciphers/AES.java index e310d7189b2a..cd04395e1b72 100644 --- a/src/main/java/com/thealgorithms/ciphers/AES.java +++ b/src/main/java/com/thealgorithms/ciphers/AES.java @@ -7,7 +7,9 @@ * This class is build to demonstrate the application of the AES-algorithm on a * single 128-Bit block of data. */ -public class AES { +public final class AES { + private AES() { + } /** * Precalculated values for x to the power of 2 in Rijndaels galois field. diff --git a/src/main/java/com/thealgorithms/ciphers/AESEncryption.java b/src/main/java/com/thealgorithms/ciphers/AESEncryption.java index 169fc10e5269..14582205442f 100644 --- a/src/main/java/com/thealgorithms/ciphers/AESEncryption.java +++ b/src/main/java/com/thealgorithms/ciphers/AESEncryption.java @@ -3,7 +3,12 @@ import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; -import javax.crypto.*; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.KeyGenerator; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; import javax.crypto.spec.GCMParameterSpec; /** @@ -12,7 +17,9 @@ * hence in the following program we display it in hexadecimal format of the * underlying bytes. */ -public class AESEncryption { +public final class AESEncryption { + private AESEncryption() { + } private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); private static Cipher aesCipher; diff --git a/src/main/java/com/thealgorithms/ciphers/AffineCipher.java b/src/main/java/com/thealgorithms/ciphers/AffineCipher.java index 9ff63ddfe7c5..bcf3a5b0167b 100644 --- a/src/main/java/com/thealgorithms/ciphers/AffineCipher.java +++ b/src/main/java/com/thealgorithms/ciphers/AffineCipher.java @@ -1,6 +1,8 @@ package com.thealgorithms.ciphers; -class AffineCipher { +final class AffineCipher { + private AffineCipher() { + } // Key values of a and b static int a = 17; @@ -25,7 +27,7 @@ static String encryptMessage(char[] msg) { static String decryptCipher(String cipher) { String msg = ""; - int a_inv = 0; + int aInv = 0; int flag = 0; // Find a^-1 (the multiplicative inverse of a @@ -36,7 +38,7 @@ static String decryptCipher(String cipher) { // Check if (a*i)%26 == 1, // then i will be the multiplicative inverse of a if (flag == 1) { - a_inv = i; + aInv = i; } } for (int i = 0; i < cipher.length(); i++) { @@ -44,7 +46,7 @@ static String decryptCipher(String cipher) { {here x is cipher[i] and m is 26} and added 'A' to bring it in range of ASCII alphabet[ 65-90 | A-Z ] */ if (cipher.charAt(i) != ' ') { - msg = msg + (char) (((a_inv * ((cipher.charAt(i) + 'A' - b)) % 26)) + 'A'); + msg = msg + (char) (((aInv * ((cipher.charAt(i) + 'A' - b)) % 26)) + 'A'); } else { // else simply append space character msg += cipher.charAt(i); } diff --git a/src/main/java/com/thealgorithms/ciphers/Blowfish.java b/src/main/java/com/thealgorithms/ciphers/Blowfish.java index fc7c5d04fcb0..a8fa6fc56088 100644 --- a/src/main/java/com/thealgorithms/ciphers/Blowfish.java +++ b/src/main/java/com/thealgorithms/ciphers/Blowfish.java @@ -11,7 +11,7 @@ public class Blowfish { // Initializing substitution boxes - String[][] S = { + String[][] sBox = { { "d1310ba6", "98dfb5ac", @@ -1047,7 +1047,7 @@ public class Blowfish { }; // Initializing subkeys with digits of pi - String[] P = { + String[] subKeys = { "243f6a88", "85a308d3", "13198a2e", @@ -1154,7 +1154,7 @@ private String f(String plainText) { for (int i = 0; i < 8; i += 2) { // column number for S-box is a 8-bit value long col = Long.parseUnsignedLong(hexToBin(plainText.substring(i, i + 2)), 2); - a[i / 2] = S[i / 2][(int) col]; + a[i / 2] = sBox[i / 2][(int) col]; } ans = addBin(a[0], a[1]); ans = xor(ans, a[2]); @@ -1165,9 +1165,9 @@ private String f(String plainText) { // generate subkeys private void keyGenerate(String key) { int j = 0; - for (int i = 0; i < P.length; i++) { + for (int i = 0; i < subKeys.length; i++) { // XOR-ing 32-bit parts of the key with initial subkeys - P[i] = xor(P[i], key.substring(j, j + 8)); + subKeys[i] = xor(subKeys[i], key.substring(j, j + 8)); j = (j + 8) % key.length(); } @@ -1175,10 +1175,11 @@ private void keyGenerate(String key) { // round function private String round(int time, String plainText) { - String left, right; + String left; + String right; left = plainText.substring(0, 8); right = plainText.substring(8, 16); - left = xor(left, P[time]); + left = xor(left, subKeys[time]); // output from F function String fOut = f(left); @@ -1206,8 +1207,8 @@ String encrypt(String plainText, String key) { // postprocessing String right = plainText.substring(0, 8); String left = plainText.substring(8, 16); - right = xor(right, P[16]); - left = xor(left, P[17]); + right = xor(right, subKeys[16]); + left = xor(left, subKeys[17]); return left + right; } @@ -1228,8 +1229,8 @@ String decrypt(String cipherText, String key) { // postprocessing String right = cipherText.substring(0, 8); String left = cipherText.substring(8, 16); - right = xor(right, P[1]); - left = xor(left, P[0]); + right = xor(right, subKeys[1]); + left = xor(left, subKeys[0]); return left + right; } } diff --git a/src/main/java/com/thealgorithms/ciphers/ColumnarTranspositionCipher.java b/src/main/java/com/thealgorithms/ciphers/ColumnarTranspositionCipher.java index 89a0a88654ae..e59cfb12d816 100644 --- a/src/main/java/com/thealgorithms/ciphers/ColumnarTranspositionCipher.java +++ b/src/main/java/com/thealgorithms/ciphers/ColumnarTranspositionCipher.java @@ -7,7 +7,9 @@ * * @author freitzzz */ -public class ColumnarTranspositionCipher { +public final class ColumnarTranspositionCipher { + private ColumnarTranspositionCipher() { + } private static String keyword; private static Object[][] table; diff --git a/src/main/java/com/thealgorithms/ciphers/DES.java b/src/main/java/com/thealgorithms/ciphers/DES.java index 119ad69767e2..7f3eed70f3c2 100644 --- a/src/main/java/com/thealgorithms/ciphers/DES.java +++ b/src/main/java/com/thealgorithms/ciphers/DES.java @@ -8,7 +8,7 @@ public class DES { private String key; - private String subKeys[]; + private final String[] subKeys; private void sanitize(String key) { int length = key.length(); @@ -32,66 +32,68 @@ public void setKey(String key) { this.key = key; } - // Permutation table to convert initial 64 bit key to 56 bit key - private static int[] PC1 = {57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4}; + // Permutation table to convert initial 64-bit key to 56 bit key + private static final int[] PC1 = {57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4}; // Lookup table used to shift the initial key, in order to generate the subkeys - private static int[] KEY_SHIFTS = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1}; + private static final int[] KEY_SHIFTS = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1}; // Table to convert the 56 bit subkeys to 48 bit subkeys - private static int[] PC2 = {14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32}; + private static final int[] PC2 = {14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32}; - // Initial permutatation of each 64 but message block - private static int[] IP = {58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7}; + // Initial permutation of each 64 but message block + private static final int[] IP = {58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7}; // Expansion table to convert right half of message blocks from 32 bits to 48 bits - private static int[] expansion = {32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1}; + private static final int[] EXPANSION = {32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1}; // The eight substitution boxes are defined below - private static int[][] s1 = {{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7}, {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8}, {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0}, {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}}; + private static final int[][] S1 = {{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7}, {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8}, {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0}, {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}}; - private static int[][] s2 = {{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10}, {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5}, {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15}, {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}}; + private static final int[][] S2 = {{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10}, {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5}, {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15}, {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}}; - private static int[][] s3 = {{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8}, {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1}, {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7}, {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}}; + private static final int[][] S3 = {{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8}, {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1}, {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7}, {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}}; - private static int[][] s4 = {{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15}, {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9}, {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4}, {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}}; + private static final int[][] S4 = {{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15}, {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9}, {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4}, {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}}; - private static int[][] s5 = {{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9}, {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6}, {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14}, {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}}; + private static final int[][] S5 = {{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9}, {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6}, {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14}, {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}}; - private static int[][] s6 = {{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11}, {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8}, {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6}, {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}}; + private static final int[][] S6 = {{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11}, {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8}, {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6}, {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}}; - private static int[][] s7 = {{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1}, {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6}, {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2}, {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}}; + private static final int[][] S7 = {{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1}, {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6}, {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2}, {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}}; - private static int[][] s8 = {{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7}, {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2}, {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8}, {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}; + private static final int[][] S8 = {{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7}, {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2}, {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8}, {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}; - private static int[][][] s = {s1, s2, s3, s4, s5, s6, s7, s8}; + private static final int[][][] S = {S1, S2, S3, S4, S5, S6, S7, S8}; - // Permutation table, used in the feistel function post s-box usage - static int[] permutation = {16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25}; + // Permutation table, used in the Feistel function post s-box usage + static final int[] PERMUTATION = {16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25}; // Table used for final inversion of the message box after 16 rounds of Feistel Function - static int[] IPinverse = {40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25}; + static final int[] IP_INVERSE = {40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25}; private String[] getSubkeys(String originalKey) { - StringBuilder permutedKey = new StringBuilder(); // Initial permutation of keys via PC1 - int i, j; + StringBuilder permutedKey = new StringBuilder(); // Initial permutation of keys via pc1 + int i; + int j; for (i = 0; i < 56; i++) { permutedKey.append(originalKey.charAt(PC1[i] - 1)); } - String subKeys[] = new String[16]; + String[] subKeys = new String[16]; String initialPermutedKey = permutedKey.toString(); - String C0 = initialPermutedKey.substring(0, 28), D0 = initialPermutedKey.substring(28); + String c0 = initialPermutedKey.substring(0, 28); + String d0 = initialPermutedKey.substring(28); // We will now operate on the left and right halves of the permutedKey for (i = 0; i < 16; i++) { - String Cn = C0.substring(KEY_SHIFTS[i]) + C0.substring(0, KEY_SHIFTS[i]); - String Dn = D0.substring(KEY_SHIFTS[i]) + D0.substring(0, KEY_SHIFTS[i]); - subKeys[i] = Cn + Dn; - C0 = Cn; // Re-assign the values to create running permutation - D0 = Dn; + String cN = c0.substring(KEY_SHIFTS[i]) + c0.substring(0, KEY_SHIFTS[i]); + String dN = d0.substring(KEY_SHIFTS[i]) + d0.substring(0, KEY_SHIFTS[i]); + subKeys[i] = cN + dN; + c0 = cN; // Re-assign the values to create running permutation + d0 = dN; } - // Let us shrink the keys to 48 bits (well, characters here) using PC2 + // Let us shrink the keys to 48 bits (well, characters here) using pc2 for (i = 0; i < 16; i++) { String key = subKeys[i]; permutedKey.setLength(0); @@ -104,8 +106,9 @@ private String[] getSubkeys(String originalKey) { return subKeys; } - private String XOR(String a, String b) { - int i, l = a.length(); + private String xOR(String a, String b) { + int i; + int l = a.length(); StringBuilder xor = new StringBuilder(); for (i = 0; i < l; i++) { int firstBit = a.charAt(i) - 48; // 48 is '0' in ascii @@ -116,7 +119,8 @@ private String XOR(String a, String b) { } private String createPaddedString(String s, int desiredLength, char pad) { - int i, l = s.length(); + int i; + int l = s.length(); StringBuilder paddedString = new StringBuilder(); int diff = desiredLength - l; for (i = 0; i < diff; i++) { @@ -137,9 +141,9 @@ private String feistel(String messageBlock, String key) { int i; StringBuilder expandedKey = new StringBuilder(); for (i = 0; i < 48; i++) { - expandedKey.append(messageBlock.charAt(expansion[i] - 1)); + expandedKey.append(messageBlock.charAt(EXPANSION[i] - 1)); } - String mixedKey = XOR(expandedKey.toString(), key); + String mixedKey = xOR(expandedKey.toString(), key); StringBuilder substitutedString = new StringBuilder(); // Let us now use the s-boxes to transform each 6 bit (length here) block to 4 bits @@ -147,45 +151,46 @@ private String feistel(String messageBlock, String key) { String block = mixedKey.substring(i, i + 6); int row = (block.charAt(0) - 48) * 2 + (block.charAt(5) - 48); int col = (block.charAt(1) - 48) * 8 + (block.charAt(2) - 48) * 4 + (block.charAt(3) - 48) * 2 + (block.charAt(4) - 48); - String substitutedBlock = pad(Integer.toBinaryString(s[i / 6][row][col]), 4); + String substitutedBlock = pad(Integer.toBinaryString(S[i / 6][row][col]), 4); substitutedString.append(substitutedBlock); } StringBuilder permutedString = new StringBuilder(); for (i = 0; i < 32; i++) { - permutedString.append(substitutedString.charAt(permutation[i] - 1)); + permutedString.append(substitutedString.charAt(PERMUTATION[i] - 1)); } return permutedString.toString(); } - private String encryptBlock(String message, String keys[]) { + private String encryptBlock(String message, String[] keys) { StringBuilder permutedMessage = new StringBuilder(); int i; for (i = 0; i < 64; i++) { permutedMessage.append(message.charAt(IP[i] - 1)); } - String L0 = permutedMessage.substring(0, 32), R0 = permutedMessage.substring(32); + String e0 = permutedMessage.substring(0, 32); + String f0 = permutedMessage.substring(32); // Iterate 16 times for (i = 0; i < 16; i++) { - String Ln = R0; // Previous Right block - String Rn = XOR(L0, feistel(R0, keys[i])); - L0 = Ln; - R0 = Rn; + String eN = f0; // Previous Right block + String fN = xOR(e0, feistel(f0, keys[i])); + e0 = eN; + f0 = fN; } - String combinedBlock = R0 + L0; // Reverse the 16th block + String combinedBlock = f0 + e0; // Reverse the 16th block permutedMessage.setLength(0); for (i = 0; i < 64; i++) { - permutedMessage.append(combinedBlock.charAt(IPinverse[i] - 1)); + permutedMessage.append(combinedBlock.charAt(IP_INVERSE[i] - 1)); } return permutedMessage.toString(); } // To decode, we follow the same process as encoding, but with reversed keys - private String decryptBlock(String message, String keys[]) { - String reversedKeys[] = new String[keys.length]; + private String decryptBlock(String message, String[] keys) { + String[] reversedKeys = new String[keys.length]; for (int i = 0; i < keys.length; i++) { reversedKeys[i] = keys[keys.length - i - 1]; } @@ -198,7 +203,9 @@ private String decryptBlock(String message, String keys[]) { */ public String encrypt(String message) { StringBuilder encryptedMessage = new StringBuilder(); - int l = message.length(), i, j; + int l = message.length(); + int i; + int j; if (l % 8 != 0) { int desiredLength = (l / 8 + 1) * 8; l = desiredLength; @@ -223,14 +230,16 @@ public String encrypt(String message) { */ public String decrypt(String message) { StringBuilder decryptedMessage = new StringBuilder(); - int l = message.length(), i, j; + int l = message.length(); + int i; + int j; if (l % 64 != 0) { throw new IllegalArgumentException("Encrypted message should be a multiple of 64 characters in length"); } for (i = 0; i < l; i += 64) { String block = message.substring(i, i + 64); - String result = decryptBlock(block.toString(), subKeys); - byte res[] = new byte[8]; + String result = decryptBlock(block, subKeys); + byte[] res = new byte[8]; for (j = 0; j < 64; j += 8) { res[j / 8] = (byte) Integer.parseInt(result.substring(j, j + 8), 2); } diff --git a/src/main/java/com/thealgorithms/ciphers/HillCipher.java b/src/main/java/com/thealgorithms/ciphers/HillCipher.java index a3226cef7de1..780009c2f1d6 100644 --- a/src/main/java/com/thealgorithms/ciphers/HillCipher.java +++ b/src/main/java/com/thealgorithms/ciphers/HillCipher.java @@ -11,7 +11,9 @@ * for encryption. The cipher key and plaintext/ciphertext are user inputs. * @author Ojasva Jain */ -public class HillCipher { +public final class HillCipher { + private HillCipher() { + } static Scanner userInput = new Scanner(System.in); @@ -33,7 +35,7 @@ static void encrypt(String message) { validateDeterminant(keyMatrix, matrixSize); int[][] messageVector = new int[matrixSize][1]; - String CipherText = ""; + String cipherText = ""; int[][] cipherMatrix = new int[matrixSize][1]; int j = 0; while (j < message.length()) { @@ -46,7 +48,8 @@ static void encrypt(String message) { System.out.println(messageVector[i][0]); j++; } - int x, i; + int x; + int i; for (i = 0; i < matrixSize; i++) { cipherMatrix[i][0] = 0; @@ -57,10 +60,10 @@ static void encrypt(String message) { cipherMatrix[i][0] = cipherMatrix[i][0] % 26; } for (i = 0; i < matrixSize; i++) { - CipherText += (char) (cipherMatrix[i][0] + 65); + cipherText += (char) (cipherMatrix[i][0] + 65); } } - System.out.println("Ciphertext: " + CipherText); + System.out.println("Ciphertext: " + cipherText); } // Following function decrypts a message @@ -81,7 +84,7 @@ static void decrypt(String message) { // solving for the required plaintext message int[][] messageVector = new int[n][1]; - String PlainText = ""; + String plainText = ""; int[][] plainMatrix = new int[n][1]; int j = 0; while (j < message.length()) { @@ -94,7 +97,8 @@ static void decrypt(String message) { System.out.println(messageVector[i][0]); j++; } - int x, i; + int x; + int i; for (i = 0; i < n; i++) { plainMatrix[i][0] = 0; @@ -105,15 +109,18 @@ static void decrypt(String message) { plainMatrix[i][0] = plainMatrix[i][0] % 26; } for (i = 0; i < n; i++) { - PlainText += (char) (plainMatrix[i][0] + 65); + plainText += (char) (plainMatrix[i][0] + 65); } } - System.out.println("Plaintext: " + PlainText); + System.out.println("Plaintext: " + plainText); } // Determinant calculator public static int determinant(int[][] a, int n) { - int det = 0, sign = 1, p = 0, q = 0; + int det = 0; + int sign = 1; + int p = 0; + int q = 0; if (n == 1) { det = a[0][0]; @@ -142,7 +149,6 @@ public static int determinant(int[][] a, int n) { // Function to implement Hill Cipher static void hillCipher(String message) { - message.toUpperCase(); System.out.println("What do you want to process from the message?"); System.out.println("Press 1: To Encrypt"); System.out.println("Press 2: To Decrypt"); diff --git a/src/main/java/com/thealgorithms/ciphers/Polybius.java b/src/main/java/com/thealgorithms/ciphers/Polybius.java index 7b5a27807bc4..6b3cd6ccae81 100644 --- a/src/main/java/com/thealgorithms/ciphers/Polybius.java +++ b/src/main/java/com/thealgorithms/ciphers/Polybius.java @@ -13,9 +13,11 @@ * @author Hikmet ÇAKIR * @since 08-07-2022+03:00 */ -public class Polybius { +public final class Polybius { + private Polybius() { + } - private static final char[][] key = { + private static final char[][] KEY = { // 0 1 2 3 4 /* 0 */ {'A', 'B', 'C', 'D', 'E'}, /* 1 */ {'F', 'G', 'H', 'I', 'J'}, @@ -26,9 +28,9 @@ public class Polybius { private static String findLocationByCharacter(final char character) { final StringBuilder location = new StringBuilder(); - for (int i = 0; i < key.length; i++) { - for (int j = 0; j < key[i].length; j++) { - if (character == key[i][j]) { + for (int i = 0; i < KEY.length; i++) { + for (int j = 0; j < KEY[i].length; j++) { + if (character == KEY[i][j]) { location.append(i).append(j); break; } @@ -53,7 +55,7 @@ public static String decrypt(final String ciphertext) { for (int i = 0; i < chars.length; i += 2) { int pozitionX = Character.getNumericValue(chars[i]); int pozitionY = Character.getNumericValue(chars[i + 1]); - plaintext.append(key[pozitionX][pozitionY]); + plaintext.append(KEY[pozitionX][pozitionY]); } return plaintext.toString(); } diff --git a/src/main/java/com/thealgorithms/ciphers/ProductCipher.java b/src/main/java/com/thealgorithms/ciphers/ProductCipher.java index 5b1d46fe9a9a..d7eaea757001 100644 --- a/src/main/java/com/thealgorithms/ciphers/ProductCipher.java +++ b/src/main/java/com/thealgorithms/ciphers/ProductCipher.java @@ -2,7 +2,9 @@ import java.util.Scanner; -class ProductCipher { +final class ProductCipher { + private ProductCipher() { + } public static void main(String[] args) { try (Scanner sc = new Scanner(System.in)) { @@ -24,8 +26,8 @@ public static void main(String[] args) { // Transposition encryption String transpositionInput = substitutionOutput.toString(); - int modulus; - if ((modulus = transpositionInput.length() % n) != 0) { + int modulus = transpositionInput.length() % n; + if (modulus != 0) { modulus = n - modulus; for (; modulus != 0; modulus--) { @@ -66,7 +68,6 @@ public static void main(String[] args) { System.out.println("Plaintext: "); System.out.println(plaintext); - sc.close(); } } } diff --git a/src/main/java/com/thealgorithms/ciphers/RSA.java b/src/main/java/com/thealgorithms/ciphers/RSA.java index aea15c3554c0..f50e501e68c8 100644 --- a/src/main/java/com/thealgorithms/ciphers/RSA.java +++ b/src/main/java/com/thealgorithms/ciphers/RSA.java @@ -47,7 +47,7 @@ public synchronized BigInteger decrypt(BigInteger encryptedMessage) { /** * Generate a new public and private key set. */ - public synchronized void generateKeys(int bits) { + public final synchronized void generateKeys(int bits) { SecureRandom r = new SecureRandom(); BigInteger p = new BigInteger(bits / 2, 100, r); BigInteger q = new BigInteger(bits / 2, 100, r); diff --git a/src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java b/src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java index 12e93717a3de..3cac558237c2 100644 --- a/src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java +++ b/src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java @@ -26,10 +26,10 @@ public boolean clock() { private boolean getMajorityBit() { Map bitCount = new TreeMap<>(); - bitCount.put(false, 0); - bitCount.put(true, 0); + bitCount.put(Boolean.FALSE, 0); + bitCount.put(Boolean.TRUE, 0); registers.forEach(lfsr -> bitCount.put(lfsr.getClockBit(), bitCount.get(lfsr.getClockBit()) + 1)); - return bitCount.get(false) <= bitCount.get(true); + return bitCount.get(Boolean.FALSE) <= bitCount.get(Boolean.TRUE); } } diff --git a/src/main/java/com/thealgorithms/ciphers/a5/Utils.java b/src/main/java/com/thealgorithms/ciphers/a5/Utils.java index abdd11d6b72d..b4addf18dd9d 100644 --- a/src/main/java/com/thealgorithms/ciphers/a5/Utils.java +++ b/src/main/java/com/thealgorithms/ciphers/a5/Utils.java @@ -7,7 +7,9 @@ import java.util.BitSet; -public class Utils { +public final class Utils { + private Utils() { + } public static boolean increment(BitSet bits, int size) { int i = size - 1; diff --git a/src/main/java/com/thealgorithms/conversions/AnyBaseToAnyBase.java b/src/main/java/com/thealgorithms/conversions/AnyBaseToAnyBase.java index 7a87fd15be23..4bd9c74a1751 100644 --- a/src/main/java/com/thealgorithms/conversions/AnyBaseToAnyBase.java +++ b/src/main/java/com/thealgorithms/conversions/AnyBaseToAnyBase.java @@ -13,7 +13,9 @@ * @author Michael Rolland * @version 2017.10.10 */ -public class AnyBaseToAnyBase { +public final class AnyBaseToAnyBase { + private AnyBaseToAnyBase() { + } /** * Smallest and largest base you want to accept as valid input @@ -25,7 +27,8 @@ public class AnyBaseToAnyBase { public static void main(String[] args) { Scanner in = new Scanner(System.in); String n; - int b1, b2; + int b1; + int b2; while (true) { try { System.out.print("Enter number: "); @@ -130,7 +133,8 @@ public static String base2base(String n, int b1, int b2) { // Declare variables: decimal value of n, // character of base b1, character of base b2, // and the string that will be returned. - int decimalValue = 0, charB2; + int decimalValue = 0; + int charB2; char charB1; String output = ""; // Go through every character of n diff --git a/src/main/java/com/thealgorithms/conversions/AnyBaseToDecimal.java b/src/main/java/com/thealgorithms/conversions/AnyBaseToDecimal.java index 20f15bc2ff39..6b4b14adc955 100644 --- a/src/main/java/com/thealgorithms/conversions/AnyBaseToDecimal.java +++ b/src/main/java/com/thealgorithms/conversions/AnyBaseToDecimal.java @@ -4,7 +4,9 @@ * @author Varun Upadhyay (...) */ // Driver program -public class AnyBaseToDecimal { +public final class AnyBaseToDecimal { + private AnyBaseToDecimal() { + } public static void main(String[] args) { assert convertToDecimal("1010", 2) == Integer.valueOf("1010", 2); diff --git a/src/main/java/com/thealgorithms/conversions/AnytoAny.java b/src/main/java/com/thealgorithms/conversions/AnytoAny.java index 052d6dba6953..801e493032e0 100644 --- a/src/main/java/com/thealgorithms/conversions/AnytoAny.java +++ b/src/main/java/com/thealgorithms/conversions/AnytoAny.java @@ -6,14 +6,18 @@ // number. // sn ,sb,db ---> ()dn . this is what we have to do . -public class AnytoAny { +public final class AnytoAny { + private AnytoAny() { + } public static void main(String[] args) { Scanner scn = new Scanner(System.in); int sn = scn.nextInt(); int sb = scn.nextInt(); int db = scn.nextInt(); - int m = 1, dec = 0, dn = 0; + int m = 1; + int dec = 0; + int dn = 0; while (sn != 0) { dec = dec + (sn % 10) * m; m *= sb; diff --git a/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java b/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java index fdf9df7b2467..67b815ab6466 100644 --- a/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java +++ b/src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java @@ -5,10 +5,15 @@ /** * This class converts a Binary number to a Decimal number */ -class BinaryToDecimal { +final class BinaryToDecimal { + private BinaryToDecimal() { + } public static long binaryToDecimal(long binNum) { - long binCopy, d, s = 0, power = 0; + long binCopy; + long d; + long s = 0; + long power = 0; binCopy = binNum; while (binCopy != 0) { d = binCopy % 10; diff --git a/src/main/java/com/thealgorithms/conversions/BinaryToHexadecimal.java b/src/main/java/com/thealgorithms/conversions/BinaryToHexadecimal.java index 011b60a952b8..a19baba39715 100644 --- a/src/main/java/com/thealgorithms/conversions/BinaryToHexadecimal.java +++ b/src/main/java/com/thealgorithms/conversions/BinaryToHexadecimal.java @@ -1,13 +1,16 @@ package com.thealgorithms.conversions; -import java.util.*; +import java.util.HashMap; +import java.util.Scanner; /** * Converts any Binary Number to a Hexadecimal Number * * @author Nishita Aggarwal */ -public class BinaryToHexadecimal { +public final class BinaryToHexadecimal { + private BinaryToHexadecimal() { + } /** * This method converts a binary number to a hexadecimal number. diff --git a/src/main/java/com/thealgorithms/conversions/BinaryToOctal.java b/src/main/java/com/thealgorithms/conversions/BinaryToOctal.java index 70bad812141b..6fef090287ab 100644 --- a/src/main/java/com/thealgorithms/conversions/BinaryToOctal.java +++ b/src/main/java/com/thealgorithms/conversions/BinaryToOctal.java @@ -7,7 +7,9 @@ * * @author Zachary Jones */ -public class BinaryToOctal { +public final class BinaryToOctal { + private BinaryToOctal() { + } /** * Main method @@ -30,7 +32,8 @@ public static void main(String[] args) { */ public static String convertBinaryToOctal(int binary) { String octal = ""; - int currBit = 0, j = 1; + int currBit = 0; + int j = 1; while (binary != 0) { int code3 = 0; for (int i = 0; i < 3; i++) { diff --git a/src/main/java/com/thealgorithms/conversions/DecimalToAnyBase.java b/src/main/java/com/thealgorithms/conversions/DecimalToAnyBase.java index 2d0223a4c448..019c4026bfb5 100644 --- a/src/main/java/com/thealgorithms/conversions/DecimalToAnyBase.java +++ b/src/main/java/com/thealgorithms/conversions/DecimalToAnyBase.java @@ -8,7 +8,9 @@ * @author Varun Upadhyay (...) */ // Driver Program -public class DecimalToAnyBase { +public final class DecimalToAnyBase { + private DecimalToAnyBase() { + } public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/src/main/java/com/thealgorithms/conversions/DecimalToBinary.java b/src/main/java/com/thealgorithms/conversions/DecimalToBinary.java index a6119cfbc9bc..471724ff9966 100644 --- a/src/main/java/com/thealgorithms/conversions/DecimalToBinary.java +++ b/src/main/java/com/thealgorithms/conversions/DecimalToBinary.java @@ -5,7 +5,9 @@ /** * This class converts a Decimal number to a Binary number */ -class DecimalToBinary { +final class DecimalToBinary { + private DecimalToBinary() { + } /** * Main Method @@ -22,7 +24,10 @@ public static void main(String[] args) { * conventional algorithm. */ public static void conventionalConversion() { - int n, b = 0, c = 0, d; + int n; + int b = 0; + int c = 0; + int d; Scanner input = new Scanner(System.in); System.out.printf("Conventional conversion.%n Enter the decimal number: "); n = input.nextInt(); @@ -40,7 +45,10 @@ public static void conventionalConversion() { * algorithm */ public static void bitwiseConversion() { - int n, b = 0, c = 0, d; + int n; + int b = 0; + int c = 0; + int d; Scanner input = new Scanner(System.in); System.out.printf("Bitwise conversion.%n Enter the decimal number: "); n = input.nextInt(); diff --git a/src/main/java/com/thealgorithms/conversions/DecimalToHexaDecimal.java b/src/main/java/com/thealgorithms/conversions/DecimalToHexaDecimal.java index 3564acbe568c..78838c6107b7 100644 --- a/src/main/java/com/thealgorithms/conversions/DecimalToHexaDecimal.java +++ b/src/main/java/com/thealgorithms/conversions/DecimalToHexaDecimal.java @@ -1,12 +1,14 @@ package com.thealgorithms.conversions; // hex = [0 - 9] -> [A - F] -class DecimalToHexaDecimal { +final class DecimalToHexaDecimal { + private DecimalToHexaDecimal() { + } - private static final int sizeOfIntInHalfBytes = 8; - private static final int numberOfBitsInAHalfByte = 4; - private static final int halfByte = 0x0F; - private static final char[] hexDigits = { + private static final int SIZE_OF_INT_IN_HALF_BYTES = 8; + private static final int NUMBER_OF_BITS_IN_HALF_BYTE = 4; + private static final int HALF_BYTE = 0x0F; + private static final char[] HEX_DIGITS = { '0', '1', '2', @@ -27,12 +29,12 @@ class DecimalToHexaDecimal { // Returns the hex value of the dec entered in the parameter. public static String decToHex(int dec) { - StringBuilder hexBuilder = new StringBuilder(sizeOfIntInHalfBytes); - hexBuilder.setLength(sizeOfIntInHalfBytes); - for (int i = sizeOfIntInHalfBytes - 1; i >= 0; --i) { - int j = dec & halfByte; - hexBuilder.setCharAt(i, hexDigits[j]); - dec >>= numberOfBitsInAHalfByte; + StringBuilder hexBuilder = new StringBuilder(SIZE_OF_INT_IN_HALF_BYTES); + hexBuilder.setLength(SIZE_OF_INT_IN_HALF_BYTES); + for (int i = SIZE_OF_INT_IN_HALF_BYTES - 1; i >= 0; --i) { + int j = dec & HALF_BYTE; + hexBuilder.setCharAt(i, HEX_DIGITS[j]); + dec >>= NUMBER_OF_BITS_IN_HALF_BYTE; } return hexBuilder.toString().toLowerCase(); } diff --git a/src/main/java/com/thealgorithms/conversions/DecimalToOctal.java b/src/main/java/com/thealgorithms/conversions/DecimalToOctal.java index 0f72f462c753..4bc3a6e7af8c 100644 --- a/src/main/java/com/thealgorithms/conversions/DecimalToOctal.java +++ b/src/main/java/com/thealgorithms/conversions/DecimalToOctal.java @@ -5,7 +5,9 @@ /** * This class converts Decimal numbers to Octal Numbers */ -public class DecimalToOctal { +public final class DecimalToOctal { + private DecimalToOctal() { + } /** * Main Method @@ -16,7 +18,11 @@ public class DecimalToOctal { // enter in a decimal value to get Octal output public static void main(String[] args) { Scanner sc = new Scanner(System.in); - int n, k, d, s = 0, c = 0; + int n; + int k; + int d; + int s = 0; + int c = 0; System.out.print("Decimal number: "); n = sc.nextInt(); k = n; diff --git a/src/main/java/com/thealgorithms/conversions/HexToOct.java b/src/main/java/com/thealgorithms/conversions/HexToOct.java index 2a57fbde5c41..97a8be16b2e0 100644 --- a/src/main/java/com/thealgorithms/conversions/HexToOct.java +++ b/src/main/java/com/thealgorithms/conversions/HexToOct.java @@ -7,7 +7,9 @@ * * @author Tanmay Joshi */ -public class HexToOct { +public final class HexToOct { + private HexToOct() { + } /** * This method converts a Hexadecimal number to a decimal number @@ -54,7 +56,8 @@ public static int decimal2octal(int q) { */ public static void main(String[] args) { String hexadecnum; - int decnum, octalnum; + int decnum; + int octalnum; Scanner scan = new Scanner(System.in); System.out.print("Enter Hexadecimal Number : "); diff --git a/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java b/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java index 5372c95f23d4..b6228488dc76 100644 --- a/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java +++ b/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java @@ -2,9 +2,6 @@ // Hex [0-9],[A-F] -> Binary [0,1] public class HexaDecimalToBinary { - - private final int LONG_BITS = 8; - public String convert(String numHex) { // String a HexaDecimal: int conHex = Integer.parseInt(numHex, 16); @@ -15,7 +12,8 @@ public String convert(String numHex) { } public String completeDigits(String binNum) { - for (int i = binNum.length(); i < LONG_BITS; i++) { + final int longBits = 8; + for (int i = binNum.length(); i < longBits; i++) { binNum = "0" + binNum; } return binNum; diff --git a/src/main/java/com/thealgorithms/conversions/HexaDecimalToDecimal.java b/src/main/java/com/thealgorithms/conversions/HexaDecimalToDecimal.java index 7675c83ebcfa..003781da9d5e 100644 --- a/src/main/java/com/thealgorithms/conversions/HexaDecimalToDecimal.java +++ b/src/main/java/com/thealgorithms/conversions/HexaDecimalToDecimal.java @@ -2,7 +2,9 @@ import java.util.Scanner; -public class HexaDecimalToDecimal { +public final class HexaDecimalToDecimal { + private HexaDecimalToDecimal() { + } // convert hexadecimal to decimal public static int getHexaToDec(String hex) { @@ -18,20 +20,20 @@ public static int getHexaToDec(String hex) { // Main method gets the hexadecimal input from user and converts it into Decimal output. public static void main(String[] args) { - String hexa_Input; - int dec_output; + String hexaInput; + int decOutput; Scanner scan = new Scanner(System.in); System.out.print("Enter Hexadecimal Number : "); - hexa_Input = scan.nextLine(); + hexaInput = scan.nextLine(); // convert hexadecimal to decimal - dec_output = getHexaToDec(hexa_Input); + decOutput = getHexaToDec(hexaInput); /* Pass the string to the getHexaToDec function - and it returns the decimal form in the variable dec_output. + and it returns the decimal form in the variable decOutput. */ - System.out.println("Number in Decimal: " + dec_output); + System.out.println("Number in Decimal: " + decOutput); scan.close(); } } diff --git a/src/main/java/com/thealgorithms/conversions/IntegerToRoman.java b/src/main/java/com/thealgorithms/conversions/IntegerToRoman.java index b81cfd773d75..9c031df9504d 100644 --- a/src/main/java/com/thealgorithms/conversions/IntegerToRoman.java +++ b/src/main/java/com/thealgorithms/conversions/IntegerToRoman.java @@ -7,9 +7,11 @@ * ('I', 1); ('IV',4); ('V', 5); ('IX',9); ('X', 10); ('XL',40); ('L', 50); * ('XC',90); ('C', 100); ('D', 500); ('M', 1000); */ -public class IntegerToRoman { +public final class IntegerToRoman { + private IntegerToRoman() { + } - private static int[] allArabianRomanNumbers = new int[] { + private static final int[] ALL_ROMAN_NUMBERS_IN_ARABIC = new int[] { 1000, 900, 500, @@ -24,7 +26,7 @@ public class IntegerToRoman { 4, 1, }; - private static String[] allRomanNumbers = new String[] { + private static final String[] ALL_ROMAN_NUMBERS = new String[] { "M", "CM", "D", @@ -48,13 +50,13 @@ public static String integerToRoman(int num) { StringBuilder builder = new StringBuilder(); - for (int a = 0; a < allArabianRomanNumbers.length; a++) { - int times = num / allArabianRomanNumbers[a]; + for (int a = 0; a < ALL_ROMAN_NUMBERS_IN_ARABIC.length; a++) { + int times = num / ALL_ROMAN_NUMBERS_IN_ARABIC[a]; for (int b = 0; b < times; b++) { - builder.append(allRomanNumbers[a]); + builder.append(ALL_ROMAN_NUMBERS[a]); } - num -= times * allArabianRomanNumbers[a]; + num -= times * ALL_ROMAN_NUMBERS_IN_ARABIC[a]; } return builder.toString(); diff --git a/src/main/java/com/thealgorithms/conversions/OctalToBinary.java b/src/main/java/com/thealgorithms/conversions/OctalToBinary.java index 4dd581bd6116..6b01c2f65cfe 100644 --- a/src/main/java/com/thealgorithms/conversions/OctalToBinary.java +++ b/src/main/java/com/thealgorithms/conversions/OctalToBinary.java @@ -6,7 +6,9 @@ * @author Bama Charan Chhandogi */ -public class OctalToBinary { +public final class OctalToBinary { + private OctalToBinary() { + } public static long convertOctalToBinary(int octalNumber) { long binaryNumber = 0; int digitPosition = 1; diff --git a/src/main/java/com/thealgorithms/conversions/OctalToDecimal.java b/src/main/java/com/thealgorithms/conversions/OctalToDecimal.java index d4916a3dbcca..187f0ed1e2ea 100644 --- a/src/main/java/com/thealgorithms/conversions/OctalToDecimal.java +++ b/src/main/java/com/thealgorithms/conversions/OctalToDecimal.java @@ -7,7 +7,9 @@ * * @author Zachary Jones */ -public class OctalToDecimal { +public final class OctalToDecimal { + private OctalToDecimal() { + } /** * Main method diff --git a/src/main/java/com/thealgorithms/conversions/OctalToHexadecimal.java b/src/main/java/com/thealgorithms/conversions/OctalToHexadecimal.java index 5edd94c38430..5cc97fde12aa 100644 --- a/src/main/java/com/thealgorithms/conversions/OctalToHexadecimal.java +++ b/src/main/java/com/thealgorithms/conversions/OctalToHexadecimal.java @@ -7,7 +7,9 @@ * * @author Tanmay Joshi */ -public class OctalToHexadecimal { +public final class OctalToHexadecimal { + private OctalToHexadecimal() { + } /** * This method converts a Octal number to a decimal number diff --git a/src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java b/src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java index 65cb00fc0ad0..84cbff09db6b 100644 --- a/src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java +++ b/src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java @@ -13,7 +13,9 @@ * (description adapted from [1] and * [2]). */ -public class RgbHsvConversion { +public final class RgbHsvConversion { + private RgbHsvConversion() { + } public static void main(String[] args) { // Expected RGB-values taken from https://www.rapidtables.com/convert/color/hsv-to-rgb.html diff --git a/src/main/java/com/thealgorithms/conversions/RomanToInteger.java b/src/main/java/com/thealgorithms/conversions/RomanToInteger.java index fddb56232c58..cf2d4145858f 100644 --- a/src/main/java/com/thealgorithms/conversions/RomanToInteger.java +++ b/src/main/java/com/thealgorithms/conversions/RomanToInteger.java @@ -1,14 +1,13 @@ package com.thealgorithms.conversions; -import java.util.*; +import java.util.HashMap; +import java.util.Map; -public class RomanToInteger { - - private static Map map = new HashMap() { - /** - * */ - private static final long serialVersionUID = 87605733047260530L; +public final class RomanToInteger { + private RomanToInteger() { + } + private static final Map ROMAN_TO_INT = new HashMap<>() { { put('I', 1); put('V', 5); @@ -25,31 +24,31 @@ public class RomanToInteger { /** * This function convert Roman number into Integer * - * @param A Roman number string + * @param a Roman number string * @return integer */ - public static int romanToInt(String A) { - A = A.toUpperCase(); + public static int romanToInt(String a) { + a = a.toUpperCase(); char prev = ' '; int sum = 0; int newPrev = 0; - for (int i = A.length() - 1; i >= 0; i--) { - char c = A.charAt(i); + for (int i = a.length() - 1; i >= 0; i--) { + char c = a.charAt(i); if (prev != ' ') { - // checking current Number greater then previous or not - newPrev = map.get(prev) > newPrev ? map.get(prev) : newPrev; + // checking current Number greater than previous or not + newPrev = ROMAN_TO_INT.get(prev) > newPrev ? ROMAN_TO_INT.get(prev) : newPrev; } - int currentNum = map.get(c); + int currentNum = ROMAN_TO_INT.get(c); - // if current number greater then prev max previous then add + // if current number greater than prev max previous then add if (currentNum >= newPrev) { sum += currentNum; } else { - // subtract upcoming number until upcoming number not greater then prev max + // subtract upcoming number until upcoming number not greater than prev max sum -= currentNum; } diff --git a/src/main/java/com/thealgorithms/conversions/TurkishToLatinConversion.java b/src/main/java/com/thealgorithms/conversions/TurkishToLatinConversion.java index d991f5f31faf..4d13b8b7fd55 100644 --- a/src/main/java/com/thealgorithms/conversions/TurkishToLatinConversion.java +++ b/src/main/java/com/thealgorithms/conversions/TurkishToLatinConversion.java @@ -7,7 +7,9 @@ * * @author Özgün Gökşenli */ -public class TurkishToLatinConversion { +public final class TurkishToLatinConversion { + private TurkishToLatinConversion() { + } /** * Main method @@ -58,7 +60,7 @@ public static String convertTurkishToLatin(String param) { 'G', }; for (int i = 0; i < turkishChars.length; i++) { - param = param.replaceAll(new String(new char[] {turkishChars[i]}), new String(new char[] {latinChars[i]})); + param = param.replaceAll(String.valueOf(turkishChars[i]), String.valueOf(latinChars[i])); } return param; } diff --git a/src/main/java/com/thealgorithms/datastructures/bags/Bag.java b/src/main/java/com/thealgorithms/datastructures/bags/Bag.java index c82b9124bebc..ff5c832baeaf 100644 --- a/src/main/java/com/thealgorithms/datastructures/bags/Bag.java +++ b/src/main/java/com/thealgorithms/datastructures/bags/Bag.java @@ -13,7 +13,7 @@ public class Bag implements Iterable { private Node firstElement; // first element of the bag private int size; // size of bag - private static class Node { + private static final class Node { private Element content; private Node nextElement; @@ -80,7 +80,7 @@ private class ListIterator implements Iterator { private Node currentElement; - public ListIterator(Node firstElement) { + ListIterator(Node firstElement) { currentElement = firstElement; } diff --git a/src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java b/src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java index db85afa18c81..a327690d7896 100644 --- a/src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java +++ b/src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java @@ -42,7 +42,7 @@ private class Hash { int index; - public Hash(int index) { + Hash(int index) { this.index = index; } diff --git a/src/main/java/com/thealgorithms/datastructures/buffers/CircularBuffer.java b/src/main/java/com/thealgorithms/datastructures/buffers/CircularBuffer.java index 5e1c815ff9b3..63295b83abe6 100644 --- a/src/main/java/com/thealgorithms/datastructures/buffers/CircularBuffer.java +++ b/src/main/java/com/thealgorithms/datastructures/buffers/CircularBuffer.java @@ -43,7 +43,7 @@ private static class CircularPointer { private int pointer; private final int max; - public CircularPointer(int pointer, int max) { + CircularPointer(int pointer, int max) { this.pointer = pointer; this.max = max; } diff --git a/src/main/java/com/thealgorithms/datastructures/caches/LFUCache.java b/src/main/java/com/thealgorithms/datastructures/caches/LFUCache.java index 03a1d59e1b20..6e37b4a7109d 100644 --- a/src/main/java/com/thealgorithms/datastructures/caches/LFUCache.java +++ b/src/main/java/com/thealgorithms/datastructures/caches/LFUCache.java @@ -17,7 +17,7 @@ private class Node { private Node previous; private Node next; - public Node(K key, V value, int frequency) { + Node(K key, V value, int frequency) { this.key = key; this.value = value; this.frequency = frequency; diff --git a/src/main/java/com/thealgorithms/datastructures/caches/LRUCache.java b/src/main/java/com/thealgorithms/datastructures/caches/LRUCache.java index fcb7d975bdb4..97818ff83351 100644 --- a/src/main/java/com/thealgorithms/datastructures/caches/LRUCache.java +++ b/src/main/java/com/thealgorithms/datastructures/caches/LRUCache.java @@ -126,10 +126,10 @@ static final class Entry { private I key; private J value; - public Entry() { + Entry() { } - public Entry(Entry preEntry, Entry nextEntry, I key, J value) { + Entry(Entry preEntry, Entry nextEntry, I key, J value) { this.preEntry = preEntry; this.nextEntry = nextEntry; this.key = key; diff --git a/src/main/java/com/thealgorithms/datastructures/caches/MRUCache.java b/src/main/java/com/thealgorithms/datastructures/caches/MRUCache.java index 30f914968c3b..9c155be8b195 100644 --- a/src/main/java/com/thealgorithms/datastructures/caches/MRUCache.java +++ b/src/main/java/com/thealgorithms/datastructures/caches/MRUCache.java @@ -124,10 +124,10 @@ static final class Entry { private I key; private J value; - public Entry() { + Entry() { } - public Entry(Entry preEntry, Entry nextEntry, I key, J value) { + Entry(Entry preEntry, Entry nextEntry, I key, J value) { this.preEntry = preEntry; this.nextEntry = nextEntry; this.key = key; diff --git a/src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java b/src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java index 63364f858ec5..25b01bce19f3 100644 --- a/src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java +++ b/src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java @@ -17,7 +17,7 @@ */ class GCounter { - private final Map P; + private final Map counterMap; private final int myId; private final int n; @@ -26,13 +26,13 @@ class GCounter { * * @param n The number of nodes in the cluster. */ - public GCounter(int myId, int n) { + GCounter(int myId, int n) { this.myId = myId; this.n = n; - this.P = new HashMap<>(); + this.counterMap = new HashMap<>(); for (int i = 0; i < n; i++) { - P.put(i, 0); + counterMap.put(i, 0); } } @@ -40,7 +40,7 @@ public GCounter(int myId, int n) { * Increments the counter for the current node. */ public void increment() { - P.put(myId, P.get(myId) + 1); + counterMap.put(myId, counterMap.get(myId) + 1); } /** @@ -50,7 +50,7 @@ public void increment() { */ public int value() { int sum = 0; - for (int v : P.values()) { + for (int v : counterMap.values()) { sum += v; } return sum; @@ -64,7 +64,7 @@ public int value() { */ public boolean compare(GCounter other) { for (int i = 0; i < n; i++) { - if (this.P.get(i) > other.P.get(i)) { + if (this.counterMap.get(i) > other.counterMap.get(i)) { return false; } } @@ -78,7 +78,7 @@ public boolean compare(GCounter other) { */ public void merge(GCounter other) { for (int i = 0; i < n; i++) { - this.P.put(i, Math.max(this.P.get(i), other.P.get(i))); + this.counterMap.put(i, Math.max(this.counterMap.get(i), other.counterMap.get(i))); } } } diff --git a/src/main/java/com/thealgorithms/datastructures/crdt/LWWElementSet.java b/src/main/java/com/thealgorithms/datastructures/crdt/LWWElementSet.java index 722c916ab0ce..2c6ce8a427d1 100644 --- a/src/main/java/com/thealgorithms/datastructures/crdt/LWWElementSet.java +++ b/src/main/java/com/thealgorithms/datastructures/crdt/LWWElementSet.java @@ -26,7 +26,7 @@ class Element { * @param timestamp The timestamp associated with the element. * @param bias The bias of the element (ADDS or REMOVALS). */ - public Element(String key, int timestamp, Bias bias) { + Element(String key, int timestamp, Bias bias) { this.key = key; this.timestamp = timestamp; this.bias = bias; @@ -49,7 +49,7 @@ class LWWElementSet { /** * Constructs an empty LWWElementSet. */ - public LWWElementSet() { + LWWElementSet() { this.addSet = new HashMap<>(); this.removeSet = new HashMap<>(); } @@ -124,14 +124,14 @@ public void merge(LWWElementSet other) { * @return True if the first element's timestamp is greater or the bias is ADDS and timestamps are equal. */ public boolean compareTimestamps(Element e, Element other) { - if (!e.bias.equals(other.bias)) { + if (e.bias != other.bias) { throw new IllegalArgumentException("Invalid bias value"); } Bias bias = e.bias; int timestampComparison = Integer.compare(e.timestamp, other.timestamp); if (timestampComparison == 0) { - return !bias.equals(Bias.ADDS); + return bias != Bias.ADDS; } return timestampComparison < 0; } diff --git a/src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java b/src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java index 828e0b0804b3..53c21dcbd108 100644 --- a/src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java +++ b/src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java @@ -17,8 +17,8 @@ */ class PNCounter { - private final Map P; - private final Map N; + private final Map pCounter; + private final Map nCounter; private final int myId; private final int n; @@ -28,15 +28,15 @@ class PNCounter { * @param myId The identifier of the current node. * @param n The number of nodes in the cluster. */ - public PNCounter(int myId, int n) { + PNCounter(int myId, int n) { this.myId = myId; this.n = n; - this.P = new HashMap<>(); - this.N = new HashMap<>(); + this.pCounter = new HashMap<>(); + this.nCounter = new HashMap<>(); for (int i = 0; i < n; i++) { - P.put(i, 0); - N.put(i, 0); + pCounter.put(i, 0); + nCounter.put(i, 0); } } @@ -44,14 +44,14 @@ public PNCounter(int myId, int n) { * Increments the increment counter for the current node. */ public void increment() { - P.put(myId, P.get(myId) + 1); + pCounter.put(myId, pCounter.get(myId) + 1); } /** * Increments the decrement counter for the current node. */ public void decrement() { - N.put(myId, N.get(myId) + 1); + nCounter.put(myId, nCounter.get(myId) + 1); } /** @@ -60,8 +60,8 @@ public void decrement() { * @return The total value of the counter. */ public int value() { - int sumP = P.values().stream().mapToInt(Integer::intValue).sum(); - int sumN = N.values().stream().mapToInt(Integer::intValue).sum(); + int sumP = pCounter.values().stream().mapToInt(Integer::intValue).sum(); + int sumN = nCounter.values().stream().mapToInt(Integer::intValue).sum(); return sumP - sumN; } @@ -76,7 +76,7 @@ public boolean compare(PNCounter other) { throw new IllegalArgumentException("Cannot compare PN-Counters with different number of nodes"); } for (int i = 0; i < n; i++) { - if (this.P.get(i) > other.P.get(i) && this.N.get(i) > other.N.get(i)) { + if (this.pCounter.get(i) > other.pCounter.get(i) && this.nCounter.get(i) > other.nCounter.get(i)) { return false; } } @@ -93,8 +93,8 @@ public void merge(PNCounter other) { throw new IllegalArgumentException("Cannot merge PN-Counters with different number of nodes"); } for (int i = 0; i < n; i++) { - this.P.put(i, Math.max(this.P.get(i), other.P.get(i))); - this.N.put(i, Math.max(this.N.get(i), other.N.get(i))); + this.pCounter.put(i, Math.max(this.pCounter.get(i), other.pCounter.get(i))); + this.nCounter.put(i, Math.max(this.nCounter.get(i), other.nCounter.get(i))); } } } diff --git a/src/main/java/com/thealgorithms/datastructures/dynamicarray/DynamicArray.java b/src/main/java/com/thealgorithms/datastructures/dynamicarray/DynamicArray.java index f6f0276e0c35..cfec2e3b2c37 100644 --- a/src/main/java/com/thealgorithms/datastructures/dynamicarray/DynamicArray.java +++ b/src/main/java/com/thealgorithms/datastructures/dynamicarray/DynamicArray.java @@ -1,6 +1,10 @@ package com.thealgorithms.datastructures.dynamicarray; -import java.util.*; +import java.util.Arrays; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.Objects; import java.util.function.Consumer; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -117,7 +121,8 @@ private void fastRemove(final Object[] elements, final int index) { System.arraycopy(elements, index + 1, elements, index, newSize - index); } - elements[this.size = newSize] = null; + this.size = newSize; + this.elements[this.size] = null; } private E getElement(final int index) { @@ -149,7 +154,7 @@ public Iterator iterator() { return new DynamicArrayIterator(); } - private class DynamicArrayIterator implements Iterator { + private final class DynamicArrayIterator implements Iterator { private int cursor; diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/A_Star.java b/src/main/java/com/thealgorithms/datastructures/graphs/A_Star.java index 8cd28378d9d3..b1af21eb6ff2 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/A_Star.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/A_Star.java @@ -3,9 +3,15 @@ */ package com.thealgorithms.datastructures.graphs; -import java.util.*; - -public class A_Star { +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.PriorityQueue; + +public final class A_Star { + private A_Star() { + } private static class Graph { @@ -14,7 +20,7 @@ private static class Graph { private ArrayList> graph; // Initialise ArrayLists in Constructor - public Graph(int size) { + Graph(int size) { this.graph = new ArrayList<>(); for (int i = 0; i < size; i++) { this.graph.add(new ArrayList<>()); @@ -38,7 +44,7 @@ private static class Edge { private int to; private int weight; - public Edge(int from, int to, int weight) { + Edge(int from, int to, int weight) { this.from = from; this.to = to; this.weight = weight; @@ -64,7 +70,7 @@ private static class PathAndDistance { private ArrayList path; // list of visited nodes in this path. private int estimated; // heuristic value associated to the last node od the path (current node). - public PathAndDistance(int distance, ArrayList path, int estimated) { + PathAndDistance(int distance, ArrayList path, int estimated) { this.distance = distance; this.path = path; this.estimated = estimated; diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/BellmanFord.java b/src/main/java/com/thealgorithms/datastructures/graphs/BellmanFord.java index 9f5022b44465..522e19787e8c 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/BellmanFord.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/BellmanFord.java @@ -1,6 +1,6 @@ package com.thealgorithms.datastructures.graphs; -import java.util.*; +import java.util.Scanner; class BellmanFord /* * Implementation of Bellman ford to detect negative cycles. Graph accepts @@ -11,7 +11,8 @@ class BellmanFord /* */ { - int vertex, edge; + int vertex; + int edge; private Edge[] edges; private int index = 0; @@ -23,7 +24,8 @@ class BellmanFord /* class Edge { - int u, v; + int u; + int v; int w; /** @@ -31,7 +33,7 @@ class Edge { * @param v End vertex * @param c Weight */ - public Edge(int a, int b, int c) { + Edge(int a, int b, int c) { u = a; v = b; w = c; @@ -58,7 +60,14 @@ public static void main(String[] args) { public void go() { // shows distance to all vertices // Interactive run for understanding the try ( // class first time. Assumes source vertex is 0 and Scanner sc = new Scanner(System.in)) { - int i, v, e, u, ve, w, j, neg = 0; + int i; + int v; + int e; + int u; + int ve; + int w; + int j; + int neg = 0; System.out.println("Enter no. of vertices and edges please"); v = sc.nextInt(); e = sc.nextInt(); @@ -107,7 +116,6 @@ public void go() { // shows distance to all vertices // Interactive run for unde System.out.println(); } } - sc.close(); } } @@ -120,7 +128,11 @@ public void show(int source, int end, Edge[] arr) { // be created by using addEdge() method and passed by calling getEdgeArray() // method // Just shows results of computation, if graph is passed to it. The // graph should - int i, j, v = vertex, e = edge, neg = 0; + int i; + int j; + int v = vertex; + int e = edge; + int neg = 0; double[] dist = new double[v]; // Distance array for holding the finalized shortest path // distance between source // and all vertices diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/BipartiteGrapfDFS.java b/src/main/java/com/thealgorithms/datastructures/graphs/BipartiteGrapfDFS.java index a4827d8881b3..4cc14bfd38de 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/BipartiteGrapfDFS.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/BipartiteGrapfDFS.java @@ -14,16 +14,18 @@ * * Output : YES */ -public class BipartiteGrapfDFS { +public final class BipartiteGrapfDFS { + private BipartiteGrapfDFS() { + } - private static boolean bipartite(int V, ArrayList> adj, int[] color, int node) { + private static boolean bipartite(int v, ArrayList> adj, int[] color, int node) { if (color[node] == -1) { color[node] = 1; } for (Integer it : adj.get(node)) { if (color[it] == -1) { color[it] = 1 - color[node]; - if (!bipartite(V, adj, color, it)) { + if (!bipartite(v, adj, color, it)) { return false; } } else if (color[it] == color[node]) { @@ -33,14 +35,14 @@ private static boolean bipartite(int V, ArrayList> adj, int[] return true; } - public static boolean isBipartite(int V, ArrayList> adj) { + public static boolean isBipartite(int v, ArrayList> adj) { // Code here - int[] color = new int[V + 1]; + int[] color = new int[v + 1]; Arrays.fill(color, -1); - for (int i = 0; i < V; i++) { + for (int i = 0; i < v; i++) { if (color[i] == -1) { - if (!bipartite(V, adj, color, i)) { + if (!bipartite(v, adj, color, i)) { return false; } } @@ -52,23 +54,23 @@ public static void main(String[] args) throws IOException { BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(read.readLine().trim()); while (t-- > 0) { - String[] S = read.readLine().trim().split(" "); - int V = Integer.parseInt(S[0]); - int E = Integer.parseInt(S[1]); + String[] str1 = read.readLine().trim().split(" "); + int numVertices = Integer.parseInt(str1[0]); + int numEdges = Integer.parseInt(str1[1]); ArrayList> adj = new ArrayList<>(); - for (int i = 0; i < V; i++) { + for (int i = 0; i < numVertices; i++) { adj.add(new ArrayList<>()); } - for (int i = 0; i < E; i++) { - String[] s = read.readLine().trim().split(" "); - int u = Integer.parseInt(s[0]); - int v = Integer.parseInt(s[1]); - adj.get(u).add(v); - adj.get(v).add(u); + for (int i = 0; i < numEdges; i++) { + String[] str2 = read.readLine().trim().split(" "); + int vertexU = Integer.parseInt(str2[0]); + int vertexV = Integer.parseInt(str2[1]); + adj.get(vertexU).add(vertexV); + adj.get(vertexV).add(vertexU); } - boolean ans = isBipartite(V, adj); + boolean ans = isBipartite(numVertices, adj); if (ans) { System.out.println("YES"); } else { diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/ConnectedComponent.java b/src/main/java/com/thealgorithms/datastructures/graphs/ConnectedComponent.java index b0add255f59a..d2b76e8e06b1 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/ConnectedComponent.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/ConnectedComponent.java @@ -15,16 +15,17 @@ class Node { E name; - public Node(E name) { + Node(E name) { this.name = name; } } class Edge { - Node startNode, endNode; + Node startNode; + Node endNode; - public Edge(Node startNode, Node endNode) { + Edge(Node startNode, Node endNode) { this.startNode = startNode; this.endNode = endNode; } @@ -33,7 +34,7 @@ public Edge(Node startNode, Node endNode) { ArrayList edgeList; ArrayList nodeList; - public Graph() { + Graph() { edgeList = new ArrayList(); nodeList = new ArrayList(); } @@ -46,7 +47,8 @@ public Graph() { * @param endNode the ending Node from the edge */ public void addEdge(E startNode, E endNode) { - Node start = null, end = null; + Node start = null; + Node end = null; for (Node node : nodeList) { if (startNode.compareTo(node.name) == 0) { start = node; @@ -107,7 +109,9 @@ public ArrayList depthFirstSearch(Node n, ArrayList visited) { } } -public class ConnectedComponent { +public final class ConnectedComponent { + private ConnectedComponent() { + } public static void main(String[] args) { Graph graphChars = new Graph<>(); diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/Cycles.java b/src/main/java/com/thealgorithms/datastructures/graphs/Cycles.java index 5d5bd3c7469c..b67c5512e622 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/Cycles.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/Cycles.java @@ -5,12 +5,13 @@ class Cycle { - private int nodes, edges; + private final int nodes; + private final int edges; private int[][] adjacencyMatrix; private boolean[] visited; ArrayList> cycles = new ArrayList>(); - public Cycle() { + Cycle() { Scanner in = new Scanner(System.in); System.out.print("Enter the no. of nodes: "); nodes = in.nextInt(); @@ -27,7 +28,8 @@ public Cycle() { System.out.println("Enter the details of each edges "); for (int i = 0; i < edges; i++) { - int start, end; + int start; + int end; start = in.nextInt(); end = in.nextInt(); adjacencyMatrix[start][end] = 1; @@ -78,7 +80,9 @@ public void printAll() { } } -public class Cycles { +public final class Cycles { + private Cycles() { + } public static void main(String[] args) { Cycle c = new Cycle(); diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/DIJSKSTRAS_ALGORITHM.java b/src/main/java/com/thealgorithms/datastructures/graphs/DIJSKSTRAS_ALGORITHM.java index 59f0d0116762..8503aa48ec37 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/DIJSKSTRAS_ALGORITHM.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/DIJSKSTRAS_ALGORITHM.java @@ -8,17 +8,18 @@ class dijkstras { int k = 9; - int minDist(int[] dist, Boolean[] Set) { - int min = Integer.MAX_VALUE, min_index = -1; + int minDist(int[] dist, Boolean[] set) { + int min = Integer.MAX_VALUE; + int minIndex = -1; for (int r = 0; r < k; r++) { - if (!Set[r] && dist[r] <= min) { + if (!set[r] && dist[r] <= min) { min = dist[r]; - min_index = r; + minIndex = r; } } - return min_index; + return minIndex; } void print(int[] dist) { @@ -30,22 +31,22 @@ void print(int[] dist) { void dijkstra(int[][] graph, int src) { int[] dist = new int[k]; - Boolean[] Set = new Boolean[k]; + Boolean[] set = new Boolean[k]; for (int i = 0; i < k; i++) { dist[i] = Integer.MAX_VALUE; - Set[i] = false; + set[i] = Boolean.FALSE; } dist[src] = 0; for (int c = 0; c < k - 1; c++) { - int u = minDist(dist, Set); + int u = minDist(dist, set); - Set[u] = true; + set[u] = Boolean.TRUE; for (int v = 0; v < k; v++) { - if (!Set[v] && graph[u][v] != 0 && dist[u] != Integer.MAX_VALUE && dist[u] + graph[u][v] < dist[v]) { + if (!set[v] && graph[u][v] != 0 && dist[u] != Integer.MAX_VALUE && dist[u] + graph[u][v] < dist[v]) { dist[v] = dist[u] + graph[u][v]; } } diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java index b295fb08c1dc..d47ffe3aa27d 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java @@ -4,31 +4,31 @@ public class FloydWarshall { - private int[][] DistanceMatrix; + private int[][] distanceMatrix; private int numberofvertices; // number of vertices in the graph public static final int INFINITY = 999; public FloydWarshall(int numberofvertices) { - DistanceMatrix = new int[numberofvertices + 1][numberofvertices + 1]; // stores the value of distance from all the possible path form the source + distanceMatrix = new int[numberofvertices + 1][numberofvertices + 1]; // stores the value of distance from all the possible path form the source // vertex to destination vertex // The matrix is initialized with 0's by default this.numberofvertices = numberofvertices; } - public void floydwarshall(int[][] AdjacencyMatrix) { // calculates all the distances from source to destination vertex + public void floydwarshall(int[][] adjacencyMatrix) { // calculates all the distances from source to destination vertex for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { - DistanceMatrix[source][destination] = AdjacencyMatrix[source][destination]; + distanceMatrix[source][destination] = adjacencyMatrix[source][destination]; } } for (int intermediate = 1; intermediate <= numberofvertices; intermediate++) { for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { - if (DistanceMatrix[source][intermediate] + DistanceMatrix[intermediate][destination] < DistanceMatrix[source][destination]) { // calculated distance it get replaced as + if (distanceMatrix[source][intermediate] + distanceMatrix[intermediate][destination] < distanceMatrix[source][destination]) { // calculated distance it get replaced as // new shortest distance // if the new // distance calculated is less then the // earlier shortest - DistanceMatrix[source][destination] = DistanceMatrix[source][intermediate] + DistanceMatrix[intermediate][destination]; + distanceMatrix[source][destination] = distanceMatrix[source][intermediate] + distanceMatrix[intermediate][destination]; } } } @@ -40,7 +40,7 @@ public void floydwarshall(int[][] AdjacencyMatrix) { // calculates all the dista for (int source = 1; source <= numberofvertices; source++) { System.out.print(source + "\t"); for (int destination = 1; destination <= numberofvertices; destination++) { - System.out.print(DistanceMatrix[source][destination] + "\t"); + System.out.print(distanceMatrix[source][destination] + "\t"); } System.out.println(); } diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/Graphs.java b/src/main/java/com/thealgorithms/datastructures/graphs/Graphs.java index 77cea399c173..b0970f36ddc5 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/Graphs.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/Graphs.java @@ -6,7 +6,7 @@ class AdjacencyListGraph> { ArrayList vertices; - public AdjacencyListGraph() { + AdjacencyListGraph() { vertices = new ArrayList<>(); } @@ -15,7 +15,7 @@ private class Vertex { E data; ArrayList adjacentVertices; - public Vertex(E data) { + Vertex(E data) { adjacentVertices = new ArrayList<>(); this.data = data; } @@ -75,7 +75,8 @@ public boolean removeEdge(E from, E to) { * already did */ public boolean addEdge(E from, E to) { - Vertex fromV = null, toV = null; + Vertex fromV = null; + Vertex toV = null; for (Vertex v : vertices) { if (from.compareTo(v.data) == 0) { // see if from vertex already exists fromV = v; @@ -120,7 +121,9 @@ public String toString() { } } -public class Graphs { +public final class Graphs { + private Graphs() { + } public static void main(String[] args) { AdjacencyListGraph graph = new AdjacencyListGraph<>(); diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/HamiltonianCycle.java b/src/main/java/com/thealgorithms/datastructures/graphs/HamiltonianCycle.java index 0016abef2419..65483eeeb65c 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/HamiltonianCycle.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/HamiltonianCycle.java @@ -8,7 +8,8 @@ */ public class HamiltonianCycle { - private int V, pathCount; + private int vertex; + private int pathCount; private int[] cycle; private int[][] graph; @@ -21,8 +22,8 @@ public class HamiltonianCycle { * else returns 1D array with value -1. */ public int[] findHamiltonianCycle(int[][] graph) { - this.V = graph.length; - this.cycle = new int[this.V + 1]; + this.vertex = graph.length; + this.cycle = new int[this.vertex + 1]; // Initialize path array with -1 value for (int i = 0; i < this.cycle.length; i++) { @@ -52,17 +53,17 @@ public int[] findHamiltonianCycle(int[][] graph) { * @returns true if path is found false otherwise */ public boolean isPathFound(int vertex) { - boolean isLastVertexConnectedToStart = this.graph[vertex][0] == 1 && this.pathCount == this.V; + boolean isLastVertexConnectedToStart = this.graph[vertex][0] == 1 && this.pathCount == this.vertex; if (isLastVertexConnectedToStart) { return true; } /** all vertices selected but last vertex not linked to 0 **/ - if (this.pathCount == this.V) { + if (this.pathCount == this.vertex) { return false; } - for (int v = 0; v < this.V; v++) { + for (int v = 0; v < this.vertex; v++) { /** if connected **/ if (this.graph[vertex][v] == 1) { /** add to path **/ diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java b/src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java index e978ddc1e764..145071890d76 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java @@ -130,7 +130,9 @@ ArrayList topSortOrder() { /** * A driver class that sorts a given graph in topological order. */ -public class KahnsAlgorithm { +public final class KahnsAlgorithm { + private KahnsAlgorithm() { + } public static void main(String[] args) { // Graph definition and initialization diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/Kruskal.java b/src/main/java/com/thealgorithms/datastructures/graphs/Kruskal.java index bf5afcd13fda..eb5b65d5c0d4 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/Kruskal.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/Kruskal.java @@ -23,7 +23,7 @@ private static class Edge { private int to; private int weight; - public Edge(int from, int to, int weight) { + Edge(int from, int to, int weight) { this.from = from; this.to = to; this.weight = weight; diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/MatrixGraphs.java b/src/main/java/com/thealgorithms/datastructures/graphs/MatrixGraphs.java index 0348a60bc135..902553f9a54c 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/MatrixGraphs.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/MatrixGraphs.java @@ -12,7 +12,9 @@ * * @author Unknown */ -public class MatrixGraphs { +public final class MatrixGraphs { + private MatrixGraphs() { + } public static void main(String[] args) { AdjacencyMatrixGraph graph = new AdjacencyMatrixGraph(10); @@ -46,17 +48,17 @@ class AdjacencyMatrixGraph { /** * The number of vertices in the graph */ - private int _numberOfVertices; + private int vertexCount; /** * The number of edges in the graph */ - private int _numberOfEdges; + private int edgeCount; /** * The adjacency matrix for the graph */ - private int[][] _adjacency; + private int[][] adjMatrix; /** * Static variables to define whether or not an edge exists in the adjacency @@ -68,7 +70,7 @@ class AdjacencyMatrixGraph { /** * Constructor */ - public AdjacencyMatrixGraph(int givenNumberOfVertices) { + AdjacencyMatrixGraph(int givenNumberOfVertices) { this.setNumberOfVertices(givenNumberOfVertices); this.setNumberOfEdges(0); this.setAdjacency(new int[givenNumberOfVertices][givenNumberOfVertices]); @@ -85,16 +87,16 @@ public AdjacencyMatrixGraph(int givenNumberOfVertices) { * @param newNumberOfVertices the new number of vertices */ private void setNumberOfVertices(int newNumberOfVertices) { - this._numberOfVertices = newNumberOfVertices; + this.vertexCount = newNumberOfVertices; } /** - * Getter for `this._numberOfVertices` + * Getter for `this.vertexCount` * * @return the number of vertices in the graph */ public int numberOfVertices() { - return this._numberOfVertices; + return this.vertexCount; } /** @@ -104,16 +106,16 @@ public int numberOfVertices() { * */ private void setNumberOfEdges(int newNumberOfEdges) { - this._numberOfEdges = newNumberOfEdges; + this.edgeCount = newNumberOfEdges; } /** - * Getter for `this._numberOfEdges` + * Getter for `this.edgeCount` * * @return the number of edges */ public int numberOfEdges() { - return this._numberOfEdges; + return this.edgeCount; } /** @@ -122,7 +124,7 @@ public int numberOfEdges() { * @param newAdjacency the new adjaceny matrix */ private void setAdjacency(int[][] newAdjacency) { - this._adjacency = newAdjacency; + this.adjMatrix = newAdjacency; } /** @@ -131,7 +133,7 @@ private void setAdjacency(int[][] newAdjacency) { * @return the adjacency matrix */ private int[][] adjacency() { - return this._adjacency; + return this.adjMatrix; } /** @@ -220,12 +222,12 @@ public boolean removeEdge(int from, int to) { */ public List depthFirstOrder(int startVertex) { // If the startVertex is invalid, return an empty list - if (startVertex >= _numberOfVertices || startVertex < 0) { + if (startVertex >= vertexCount || startVertex < 0) { return new ArrayList(); } // Create an array to track the visited vertices - boolean[] visited = new boolean[_numberOfVertices]; + boolean[] visited = new boolean[vertexCount]; // Create a list to keep track of the order of our traversal ArrayList orderList = new ArrayList(); @@ -257,7 +259,7 @@ private void depthFirstOrder(int currentVertex, boolean[] visited, List orderList.add(currentVertex); // Get the adjacency array for this vertex - int[] adjacent = _adjacency[currentVertex]; + int[] adjacent = adjMatrix[currentVertex]; for (int i = 0; i < adjacent.length; i++) { // we are considering exploring, recurse on it // If an edge exists between the // currentVertex and the vertex if (adjacent[i] == AdjacencyMatrixGraph.EDGE_EXIST) { @@ -275,12 +277,12 @@ private void depthFirstOrder(int currentVertex, boolean[] visited, List */ public List breadthFirstOrder(int startVertex) { // If the specified startVertex is invalid, return an empty list - if (startVertex >= _numberOfVertices || startVertex < 0) { + if (startVertex >= vertexCount || startVertex < 0) { return new ArrayList(); } // Create an array to keep track of the visited vertices - boolean[] visited = new boolean[_numberOfVertices]; + boolean[] visited = new boolean[vertexCount]; // Create a list to keep track of the ordered vertices ArrayList orderList = new ArrayList(); @@ -307,7 +309,7 @@ public List breadthFirstOrder(int startVertex) { // Get the adjacency array for the currentVertex and // check each node - int[] adjacent = _adjacency[currentVertex]; + int[] adjacent = adjMatrix[currentVertex]; for (int vertex = 0; vertex < adjacent.length; vertex++) { // vertex we are considering exploring, we add it to the queue // If an // edge exists between the current vertex and the if (adjacent[vertex] == AdjacencyMatrixGraph.EDGE_EXIST) { @@ -334,7 +336,7 @@ public String toString() { for (int i = 0; i < this.numberOfVertices(); i++) { s = s + i + " : "; for (int j = 0; j < this.numberOfVertices(); j++) { - s = s + this._adjacency[i][j] + " "; + s = s + this.adjMatrix[i][j] + " "; } s = s + "\n"; } diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/PrimMST.java b/src/main/java/com/thealgorithms/datastructures/graphs/PrimMST.java index e61e2b6ac6ee..7e11862786f6 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/PrimMST.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/PrimMST.java @@ -14,16 +14,17 @@ class PrimMST { // value, from the set of vertices not yet included in MST int minKey(int[] key, Boolean[] mstSet) { // Initialize min value - int min = Integer.MAX_VALUE, min_index = -1; + int min = Integer.MAX_VALUE; + int minIndex = -1; for (int v = 0; v < V; v++) { if (!mstSet[v] && key[v] < min) { min = key[v]; - min_index = v; + minIndex = v; } } - return min_index; + return minIndex; } // A utility function to print the constructed MST stored in @@ -50,7 +51,7 @@ void primMST(int[][] graph) { // Initialize all keys as INFINITE for (int i = 0; i < V; i++) { key[i] = Integer.MAX_VALUE; - mstSet[i] = false; + mstSet[i] = Boolean.FALSE; } // Always include first 1st vertex in MST. @@ -65,7 +66,7 @@ void primMST(int[][] graph) { int u = minKey(key, mstSet); // Add the picked vertex to the MST Set - mstSet[u] = true; + mstSet[u] = Boolean.TRUE; // Update key value and parent index of the adjacent // vertices of the picked vertex. Consider only those diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/TarjansAlgorithm.java b/src/main/java/com/thealgorithms/datastructures/graphs/TarjansAlgorithm.java index 293ea5837823..987e73a2a5d5 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/TarjansAlgorithm.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/TarjansAlgorithm.java @@ -56,11 +56,11 @@ public class TarjansAlgorithm { // Timer for tracking lowtime and insertion time - private int Time; + private int time; - private List> SCClist = new ArrayList>(); + private List> sccList = new ArrayList>(); - public List> stronglyConnectedComponents(int V, List> graph) { + public List> stronglyConnectedComponents(int v, List> graph) { // Initially all vertices as unvisited, insertion and low time are undefined @@ -68,32 +68,32 @@ public List> stronglyConnectedComponents(int V, List // lowTime: indicates the earliest visited vertex (the vertex with minimum insertion time) // that can be reached from a subtree rooted with a particular node. - int[] lowTime = new int[V]; - int[] insertionTime = new int[V]; - for (int i = 0; i < V; i++) { + int[] lowTime = new int[v]; + int[] insertionTime = new int[v]; + for (int i = 0; i < v; i++) { insertionTime[i] = -1; lowTime[i] = -1; } // To check if element is present in stack - boolean[] isInStack = new boolean[V]; + boolean[] isInStack = new boolean[v]; // Store nodes during DFS Stack st = new Stack(); - for (int i = 0; i < V; i++) { + for (int i = 0; i < v; i++) { if (insertionTime[i] == -1) stronglyConnCompsUtil(i, lowTime, insertionTime, isInStack, st, graph); } - return SCClist; + return sccList; } private void stronglyConnCompsUtil(int u, int[] lowTime, int[] insertionTime, boolean[] isInStack, Stack st, List> graph) { // Initialize insertion time and lowTime value of current node - insertionTime[u] = Time; - lowTime[u] = Time; - Time += 1; + insertionTime[u] = time; + lowTime[u] = time; + time += 1; // Push current node into stack isInStack[u] = true; @@ -123,7 +123,7 @@ private void stronglyConnCompsUtil(int u, int[] lowTime, int[] insertionTime, bo scc.add(w); isInStack[w] = false; } - SCClist.add(scc); + sccList.add(scc); } } } diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/WelshPowell.java b/src/main/java/com/thealgorithms/datastructures/graphs/WelshPowell.java index 3b823f02388d..0981638d4903 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/WelshPowell.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/WelshPowell.java @@ -17,7 +17,7 @@ public final class WelshPowell { private WelshPowell() { } - static class Graph { + static final class Graph { private HashSet[] adjacencyLists; private Graph(int vertices) { diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArray.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArray.java index 5a1ab7b6174b..9fbb2ff0ad62 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArray.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArray.java @@ -19,8 +19,8 @@ public GenericHashMapUsingArray() { // 75, then adding 76th item it will double the size, copy all elements // & then add 76th item. - private void initBuckets(int N) { - buckets = new LinkedList[N]; + private void initBuckets(int n) { + buckets = new LinkedList[n]; for (int i = 0; i < buckets.length; i++) { buckets[i] = new LinkedList<>(); } diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayList.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayList.java index e45d827afec7..a1ef457f3432 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayList.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayList.java @@ -105,7 +105,7 @@ private class Node { K key; V val; - public Node(K key, V val) { + Node(K key, V val) { this.key = key; this.val = val; } diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/HashMapCuckooHashing.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/HashMapCuckooHashing.java index 053751ebbc51..b48502b51d08 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/HashMapCuckooHashing.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/HashMapCuckooHashing.java @@ -12,21 +12,21 @@ public class HashMapCuckooHashing { private int tableSize; // size of the hash table private Integer[] buckets; // array representing the table - private final Integer AVAILABLE; + private final Integer emptySlot; private int size; // number of elements in the hash table private int thresh; // threshold for infinite loop checking /** * Constructor initializes buckets array, hsize, and creates dummy object - * for AVAILABLE + * for emptySlot * * @param tableSize the desired size of the hash map */ public HashMapCuckooHashing(int tableSize) { this.buckets = new Integer[tableSize]; this.tableSize = tableSize; - this.AVAILABLE = Integer.MIN_VALUE; + this.emptySlot = Integer.MIN_VALUE; this.size = 0; this.thresh = (int) (Math.log(tableSize) / Math.log(2)) + 2; } @@ -66,8 +66,10 @@ public int hashFunction2(int key) { */ public void insertKey2HashTable(int key) { - Integer wrappedInt = key, temp; - int hash, loopCounter = 0; + Integer wrappedInt = key; + Integer temp; + int hash; + int loopCounter = 0; if (isFull()) { System.out.println("Hash table is full, lengthening & rehashing table"); @@ -82,7 +84,7 @@ public void insertKey2HashTable(int key) { loopCounter++; hash = hashFunction1(key); - if ((buckets[hash] == null) || Objects.equals(buckets[hash], AVAILABLE)) { + if ((buckets[hash] == null) || Objects.equals(buckets[hash], emptySlot)) { buckets[hash] = wrappedInt; size++; checkLoadFactor(); @@ -93,7 +95,7 @@ public void insertKey2HashTable(int key) { buckets[hash] = wrappedInt; wrappedInt = temp; hash = hashFunction2(temp); - if (Objects.equals(buckets[hash], AVAILABLE)) { + if (Objects.equals(buckets[hash], emptySlot)) { buckets[hash] = wrappedInt; size++; checkLoadFactor(); @@ -122,7 +124,7 @@ public void insertKey2HashTable(int key) { public void reHashTableIncreasesTableSize() { HashMapCuckooHashing newT = new HashMapCuckooHashing(tableSize * 2); for (int i = 0; i < tableSize; i++) { - if (buckets[i] != null && !Objects.equals(buckets[i], AVAILABLE)) { + if (buckets[i] != null && !Objects.equals(buckets[i], emptySlot)) { newT.insertKey2HashTable(this.buckets[i]); } } @@ -144,14 +146,14 @@ public void deleteKeyFromHashTable(int key) { } if (Objects.equals(buckets[hash], wrappedInt)) { - buckets[hash] = AVAILABLE; + buckets[hash] = emptySlot; size--; return; } hash = hashFunction2(key); if (Objects.equals(buckets[hash], wrappedInt)) { - buckets[hash] = AVAILABLE; + buckets[hash] = emptySlot; size--; return; } @@ -163,7 +165,7 @@ public void deleteKeyFromHashTable(int key) { */ public void displayHashtable() { for (int i = 0; i < tableSize; i++) { - if ((buckets[i] == null) || Objects.equals(buckets[i], AVAILABLE)) { + if ((buckets[i] == null) || Objects.equals(buckets[i], emptySlot)) { System.out.println("Bucket " + i + ": Empty"); } else { System.out.println("Bucket " + i + ": " + buckets[i].toString()); @@ -213,7 +215,7 @@ public boolean checkTableContainsKey(int key) { public double checkLoadFactor() { double factor = (double) size / tableSize; if (factor > .7) { - System.out.printf("Load factor is %.2f , rehashing table\n", factor); + System.out.printf("Load factor is %.2f , rehashing table%n", factor); reHashTableIncreasesTableSize(); } return factor; @@ -227,7 +229,7 @@ public double checkLoadFactor() { public boolean isFull() { boolean response = true; for (int i = 0; i < tableSize; i++) { - if (buckets[i] == null || Objects.equals(buckets[i], AVAILABLE)) { + if (buckets[i] == null || Objects.equals(buckets[i], emptySlot)) { return false; } } diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Intersection.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Intersection.java index ad3f617cef5a..54bd10de50fa 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Intersection.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Intersection.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; -public class Intersection { +public final class Intersection { public static List intersection(int[] arr1, int[] arr2) { if (arr1 == null || arr2 == null || arr1.length == 0 || arr2.length == 0) { diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Main.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Main.java index d68e01284ddd..082fd4b5ab2a 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Main.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/Main.java @@ -2,13 +2,16 @@ import java.util.Scanner; -public class Main { +public final class Main { + private Main() { + } public static void main(String[] args) { - int choice, key; + int choice; + int key; HashMap h = new HashMap(7); - Scanner In = new Scanner(System.in); + Scanner scan = new Scanner(System.in); while (true) { System.out.println("Enter your Choice :"); @@ -17,18 +20,18 @@ public static void main(String[] args) { System.out.println("3. Print Table"); System.out.println("4. Exit"); - choice = In.nextInt(); + choice = scan.nextInt(); switch (choice) { case 1: { System.out.println("Enter the Key: "); - key = In.nextInt(); + key = scan.nextInt(); h.insertHash(key); break; } case 2: { System.out.println("Enter the Key delete: "); - key = In.nextInt(); + key = scan.nextInt(); h.deleteHash(key); break; } @@ -38,9 +41,12 @@ public static void main(String[] args) { break; } case 4: { - In.close(); + scan.close(); return; } + default: { + throw new IllegalArgumentException("Unexpected value: " + choice); + } } } } diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MainCuckooHashing.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MainCuckooHashing.java index 94d370b66976..5a4a56e9b37d 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MainCuckooHashing.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MainCuckooHashing.java @@ -2,13 +2,16 @@ import java.util.Scanner; -public class MainCuckooHashing { +public final class MainCuckooHashing { + private MainCuckooHashing() { + } public static void main(String[] args) { - int choice, key; + int choice; + int key; HashMapCuckooHashing h = new HashMapCuckooHashing(7); - Scanner In = new Scanner(System.in); + Scanner scan = new Scanner(System.in); while (true) { System.out.println("_________________________"); @@ -21,18 +24,18 @@ public static void main(String[] args) { System.out.println("6. Check load factor"); System.out.println("7. Rehash Current Table"); - choice = In.nextInt(); + choice = scan.nextInt(); switch (choice) { case 1: { System.out.println("Enter the Key: "); - key = In.nextInt(); + key = scan.nextInt(); h.insertKey2HashTable(key); break; } case 2: { System.out.println("Enter the Key delete: "); - key = In.nextInt(); + key = scan.nextInt(); h.deleteKeyFromHashTable(key); break; } @@ -42,23 +45,26 @@ public static void main(String[] args) { break; } case 4: { - In.close(); + scan.close(); return; } case 5: { System.out.println("Enter the Key to find and print: "); - key = In.nextInt(); + key = scan.nextInt(); System.out.println("Key: " + key + " is at index: " + h.findKeyInTable(key) + "\n"); break; } case 6: { - System.out.printf("Load factor is: %.2f\n", h.checkLoadFactor()); + System.out.printf("Load factor is: %.2f%n", h.checkLoadFactor()); break; } case 7: { h.reHashTableIncreasesTableSize(); break; } + default: { + throw new IllegalArgumentException("Unexpected value: " + choice); + } } } } diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java index e3364b0e16fb..bfa5759a41b9 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java @@ -8,7 +8,9 @@ This class finds the majority element(s) in an array of integers. A majority element is an element that appears more than or equal to n/2 times, where n is the length of the array. */ -public class MajorityElement { +public final class MajorityElement { + private MajorityElement() { + } /* This method returns the majority element(s) in the given array of integers. @param nums: an array of integers diff --git a/src/main/java/com/thealgorithms/datastructures/heaps/EmptyHeapException.java b/src/main/java/com/thealgorithms/datastructures/heaps/EmptyHeapException.java index f18e4d4a960f..11af3f39981c 100644 --- a/src/main/java/com/thealgorithms/datastructures/heaps/EmptyHeapException.java +++ b/src/main/java/com/thealgorithms/datastructures/heaps/EmptyHeapException.java @@ -10,4 +10,8 @@ public class EmptyHeapException extends Exception { public EmptyHeapException(String message) { super(message); } + + public EmptyHeapException(String message, Throwable cause) { + super(message, cause); + } } diff --git a/src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java b/src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java index 23c26cfd0aab..d546b7cc88d4 100644 --- a/src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java +++ b/src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java @@ -1,6 +1,7 @@ package com.thealgorithms.datastructures.heaps; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; public class GenericHeap> { diff --git a/src/main/java/com/thealgorithms/datastructures/heaps/LeftistHeap.java b/src/main/java/com/thealgorithms/datastructures/heaps/LeftistHeap.java index cfec2b3c54bd..59cb9dfab700 100644 --- a/src/main/java/com/thealgorithms/datastructures/heaps/LeftistHeap.java +++ b/src/main/java/com/thealgorithms/datastructures/heaps/LeftistHeap.java @@ -13,14 +13,17 @@ */ public class LeftistHeap { - private class Node { - private int element, npl; - private Node left, right; + private static final class Node { + private final int element; + private int npl; + private Node left; + private Node right; // Node constructor setting the data element and left/right pointers to null private Node(int element) { this.element = element; - left = right = null; + left = null; + right = null; npl = 0; } } @@ -88,7 +91,7 @@ public void insert(int a) { } // Returns and removes the minimum element in the heap - public int extract_min() { + public int extractMin() { // If is empty return -1 if (isEmpty()) return -1; @@ -98,17 +101,17 @@ public int extract_min() { } // Function returning a list of an in order traversal of the data structure - public ArrayList in_order() { + public ArrayList inOrder() { ArrayList lst = new ArrayList<>(); - in_order_aux(root, lst); + inOrderAux(root, lst); return new ArrayList<>(lst); } // Auxiliary function for in_order - private void in_order_aux(Node n, ArrayList lst) { + private void inOrderAux(Node n, ArrayList lst) { if (n == null) return; - in_order_aux(n.left, lst); + inOrderAux(n.left, lst); lst.add(n.element); - in_order_aux(n.right, lst); + inOrderAux(n.right, lst); } } diff --git a/src/main/java/com/thealgorithms/datastructures/heaps/MaxHeap.java b/src/main/java/com/thealgorithms/datastructures/heaps/MaxHeap.java index faf9fb92e5ca..9a584da0411c 100644 --- a/src/main/java/com/thealgorithms/datastructures/heaps/MaxHeap.java +++ b/src/main/java/com/thealgorithms/datastructures/heaps/MaxHeap.java @@ -91,7 +91,7 @@ private HeapElement extractMax() { } @Override - public void insertElement(HeapElement element) { + public final void insertElement(HeapElement element) { maxHeap.add(element); toggleUp(maxHeap.size()); } @@ -123,7 +123,7 @@ public HeapElement getElement() throws EmptyHeapException { try { return extractMax(); } catch (Exception e) { - throw new EmptyHeapException("Heap is empty. Error retrieving element"); + throw new EmptyHeapException("Heap is empty. Error retrieving element", e); } } } diff --git a/src/main/java/com/thealgorithms/datastructures/heaps/MinHeap.java b/src/main/java/com/thealgorithms/datastructures/heaps/MinHeap.java index 288a1932ddad..f7ff0ec5a73d 100644 --- a/src/main/java/com/thealgorithms/datastructures/heaps/MinHeap.java +++ b/src/main/java/com/thealgorithms/datastructures/heaps/MinHeap.java @@ -85,7 +85,7 @@ private HeapElement extractMin() { } @Override - public void insertElement(HeapElement element) { + public final void insertElement(HeapElement element) { minHeap.add(element); toggleUp(minHeap.size()); } @@ -117,7 +117,7 @@ public HeapElement getElement() throws EmptyHeapException { try { return extractMin(); } catch (Exception e) { - throw new EmptyHeapException("Heap is empty. Error retrieving element"); + throw new EmptyHeapException("Heap is empty. Error retrieving element", e); } } } diff --git a/src/main/java/com/thealgorithms/datastructures/lists/CircleLinkedList.java b/src/main/java/com/thealgorithms/datastructures/lists/CircleLinkedList.java index c42b10455d14..6eb9d75fe58f 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/CircleLinkedList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/CircleLinkedList.java @@ -2,7 +2,7 @@ public class CircleLinkedList { - private static class Node { + private static final class Node { Node next; E value; diff --git a/src/main/java/com/thealgorithms/datastructures/lists/CreateAndDetectLoop.java b/src/main/java/com/thealgorithms/datastructures/lists/CreateAndDetectLoop.java index 182c8f75fe55..441c95702050 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/CreateAndDetectLoop.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/CreateAndDetectLoop.java @@ -2,7 +2,9 @@ import java.util.Scanner; -public class CreateAndDetectLoop { +public final class CreateAndDetectLoop { + private CreateAndDetectLoop() { + } /** * Prints the linked list. @@ -79,7 +81,7 @@ public static void main(String[] args) { System.out.println("Enter the number of elements to be inserted: "); int n = sc.nextInt(); - System.out.printf("Enter the %d elements: \n", n); + System.out.printf("Enter the %d elements: %n", n); while (n-- > 0) { singlyLinkedList.insert(sc.nextInt()); } diff --git a/src/main/java/com/thealgorithms/datastructures/lists/CursorLinkedList.java b/src/main/java/com/thealgorithms/datastructures/lists/CursorLinkedList.java index 22399bd6a459..b4fa9c51d4dc 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/CursorLinkedList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/CursorLinkedList.java @@ -108,25 +108,25 @@ public void remove(T element) { Objects.requireNonNull(element); // case element is in the head - T temp_element = cursorSpace[head].element; - int temp_next = cursorSpace[head].next; - if (temp_element.equals(element)) { + T tempElement = cursorSpace[head].element; + int tempNext = cursorSpace[head].next; + if (tempElement.equals(element)) { free(head); - head = temp_next; + head = tempNext; } else { // otherwise cases - int prev_index = head; - int current_index = cursorSpace[prev_index].next; - - while (current_index != -1) { - T current_element = cursorSpace[current_index].element; - if (current_element.equals(element)) { - cursorSpace[prev_index].next = cursorSpace[current_index].next; - free(current_index); + int prevIndex = head; + int currentIndex = cursorSpace[prevIndex].next; + + while (currentIndex != -1) { + T currentElement = cursorSpace[currentIndex].element; + if (currentElement.equals(element)) { + cursorSpace[prevIndex].next = cursorSpace[currentIndex].next; + free(currentIndex); break; } - prev_index = current_index; - current_index = cursorSpace[prev_index].next; + prevIndex = currentIndex; + currentIndex = cursorSpace[prevIndex].next; } } @@ -134,11 +134,11 @@ public void remove(T element) { } private void free(int index) { - Node os_node = cursorSpace[os]; - int os_next = os_node.next; + Node osNode = cursorSpace[os]; + int osNext = osNode.next; cursorSpace[os].next = index; cursorSpace[index].element = null; - cursorSpace[index].next = os_next; + cursorSpace[index].next = osNext; } public void append(T element) { diff --git a/src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java b/src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java index 89117786c35e..58898ddc0fcf 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java @@ -13,7 +13,7 @@ * * @author Unknown */ -public class DoublyLinkedList { +public final class DoublyLinkedList { /** * Head refers to the front of the list @@ -110,7 +110,7 @@ class Link { * * @param value Value of node */ - public Link(int value) { + Link(int value) { this.value = value; } diff --git a/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java b/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java index 80b36b8e4ab1..99ab09f81c1c 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/MergeSortedArrayList.java @@ -6,7 +6,9 @@ /** * @author https://github.com/shellhub */ -public class MergeSortedArrayList { +public final class MergeSortedArrayList { + private MergeSortedArrayList() { + } public static void main(String[] args) { List listA = new ArrayList<>(); diff --git a/src/main/java/com/thealgorithms/datastructures/lists/Merge_K_SortedLinkedlist.java b/src/main/java/com/thealgorithms/datastructures/lists/Merge_K_SortedLinkedlist.java index 7206ccecf25e..a714eda18bcd 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/Merge_K_SortedLinkedlist.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/Merge_K_SortedLinkedlist.java @@ -13,15 +13,15 @@ public class Merge_K_SortedLinkedlist { * This function merge K sorted LinkedList * * @param a array of LinkedList - * @param N size of array + * @param n size of array * @return node */ - Node mergeKList(Node[] a, int N) { + Node mergeKList(Node[] a, int n) { // Min Heap PriorityQueue min = new PriorityQueue<>(Comparator.comparingInt(x -> x.data)); // adding head of all linkedList in min heap - min.addAll(Arrays.asList(a).subList(0, N)); + min.addAll(Arrays.asList(a).subList(0, n)); // Make new head among smallest heads in K linkedList Node head = min.poll(); @@ -43,7 +43,7 @@ Node mergeKList(Node[] a, int N) { return head; } - private class Node { + private final class Node { private int data; private Node next; diff --git a/src/main/java/com/thealgorithms/datastructures/lists/ReverseKGroup.java b/src/main/java/com/thealgorithms/datastructures/lists/ReverseKGroup.java index bd599e2ab91f..3c4b9331266c 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/ReverseKGroup.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/ReverseKGroup.java @@ -23,17 +23,17 @@ public Node reverse(Node head, int count, int k) { Node prev = null; int count1 = 0; Node curr = head; - Node Next = null; + Node next = null; while (curr != null && count1 < k) { - Next = curr.next; + next = curr.next; curr.next = prev; prev = curr; - curr = Next; + curr = next; count1++; } - if (Next != null) { - head.next = reverse(Next, count - k, k); + if (next != null) { + head.next = reverse(next, count - k, k); } return prev; } diff --git a/src/main/java/com/thealgorithms/datastructures/lists/SinglyLinkedList.java b/src/main/java/com/thealgorithms/datastructures/lists/SinglyLinkedList.java index f379e9eccded..bca3c77f2724 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/SinglyLinkedList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/SinglyLinkedList.java @@ -82,13 +82,15 @@ public void swapNodes(int valueFirst, int valueSecond) { if (valueFirst == valueSecond) { return; } - Node previousA = null, currentA = head; + Node previousA = null; + Node currentA = head; while (currentA != null && currentA.value != valueFirst) { previousA = currentA; currentA = currentA.next; } - Node previousB = null, currentB = head; + Node previousB = null; + Node currentB = head; while (currentB != null && currentB.value != valueSecond) { previousB = currentB; currentB = currentB.next; diff --git a/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java b/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java index 33e3fd7cdb20..3309ab24917d 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java @@ -1,6 +1,11 @@ package com.thealgorithms.datastructures.lists; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Random; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -222,7 +227,7 @@ private static class Node { private final List> backward; @SuppressWarnings("unchecked") - public Node(E value, int height) { + Node(E value, int height) { this.value = value; this.height = height; diff --git a/src/main/java/com/thealgorithms/datastructures/queues/CircularQueue.java b/src/main/java/com/thealgorithms/datastructures/queues/CircularQueue.java index 9530c5a69d8c..cd3761bdcf75 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/CircularQueue.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/CircularQueue.java @@ -54,7 +54,8 @@ public int deQueue() { int res = arr[beginningOfQueue]; arr[beginningOfQueue] = Integer.MIN_VALUE; if (beginningOfQueue == topOfQueue) { - beginningOfQueue = topOfQueue = -1; + beginningOfQueue = -1; + topOfQueue = -1; } else if (beginningOfQueue + 1 == size) { beginningOfQueue = 0; } else { diff --git a/src/main/java/com/thealgorithms/datastructures/queues/GenericArrayListQueue.java b/src/main/java/com/thealgorithms/datastructures/queues/GenericArrayListQueue.java index b9331569e131..ec1e15e415b8 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/GenericArrayListQueue.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/GenericArrayListQueue.java @@ -15,7 +15,7 @@ public class GenericArrayListQueue { /** * The generic ArrayList for the queue T is the generic element */ - ArrayList _queue = new ArrayList<>(); + ArrayList elementList = new ArrayList<>(); /** * Checks if the queue has elements (not empty). @@ -23,7 +23,7 @@ public class GenericArrayListQueue { * @return True if the queue has elements. False otherwise. */ private boolean hasElements() { - return !_queue.isEmpty(); + return !elementList.isEmpty(); } /** @@ -35,7 +35,7 @@ private boolean hasElements() { public T peek() { T result = null; if (this.hasElements()) { - result = _queue.get(0); + result = elementList.get(0); } return result; } @@ -47,7 +47,7 @@ public T peek() { * @return True if the element was added successfully */ public boolean add(T element) { - return _queue.add(element); + return elementList.add(element); } /** @@ -58,7 +58,7 @@ public boolean add(T element) { public T pull() { T result = null; if (this.hasElements()) { - result = _queue.remove(0); + result = elementList.remove(0); } return result; } diff --git a/src/main/java/com/thealgorithms/datastructures/queues/LinkedQueue.java b/src/main/java/com/thealgorithms/datastructures/queues/LinkedQueue.java index 8b33e08c3808..171f24e09396 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/LinkedQueue.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/LinkedQueue.java @@ -11,15 +11,15 @@ static class Node { T data; Node next; - public Node() { + Node() { this(null); } - public Node(T data) { + Node(T data) { this(data, null); } - public Node(T data, Node next) { + Node(T data, Node next) { this.data = data; this.next = next; } @@ -44,7 +44,9 @@ public Node(T data, Node next) { * Init LinkedQueue */ public LinkedQueue() { - front = rear = new Node<>(); + + front = new Node<>(); + rear = front; } /** @@ -146,7 +148,11 @@ public boolean hasNext() { @Override public T next() { - return (node = node.next).data; + if (hasNext()) { + node = node.next; + return node.data; + } + throw new NoSuchElementException(); } }; } diff --git a/src/main/java/com/thealgorithms/datastructures/queues/PriorityQueues.java b/src/main/java/com/thealgorithms/datastructures/queues/PriorityQueues.java index dec25d2ff694..16a0c1673886 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/PriorityQueues.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/PriorityQueues.java @@ -30,7 +30,7 @@ class PriorityQueue { * Default Constructor */ - public PriorityQueue() { + PriorityQueue() { /* If capacity is not defined, default size of 11 would be used * capacity=max+1 because we cant access 0th element of PQ, and to * accomodate (max)th elements we need capacity to be max+1. @@ -50,7 +50,7 @@ public PriorityQueue() { * @param size Size of the queue */ - public PriorityQueue(int size) { + PriorityQueue(int size) { maxSize = size + 1; queueArray = new int[maxSize]; nItems = 0; diff --git a/src/main/java/com/thealgorithms/datastructures/queues/Queues.java b/src/main/java/com/thealgorithms/datastructures/queues/Queues.java index bcc292b3e9a9..2f364b7cbb6b 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/Queues.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/Queues.java @@ -38,7 +38,7 @@ class Queue { /** * init with DEFAULT_CAPACITY */ - public Queue() { + Queue() { this(DEFAULT_CAPACITY); } @@ -47,7 +47,7 @@ public Queue() { * * @param size Size of the new queue */ - public Queue(int size) { + Queue(int size) { maxSize = size; queueArray = new int[size]; front = 0; @@ -152,7 +152,9 @@ public String toString() { * * @author Unknown */ -public class Queues { +public final class Queues { + private Queues() { + } /** * Main method diff --git a/src/main/java/com/thealgorithms/datastructures/stacks/NodeStack.java b/src/main/java/com/thealgorithms/datastructures/stacks/NodeStack.java index 900d697f36f7..7c4f334cd617 100644 --- a/src/main/java/com/thealgorithms/datastructures/stacks/NodeStack.java +++ b/src/main/java/com/thealgorithms/datastructures/stacks/NodeStack.java @@ -11,20 +11,20 @@ public class NodeStack { * Entry point for the program. */ public static void main(String[] args) { - NodeStack Stack = new NodeStack(); + NodeStack stack = new NodeStack(); - Stack.push(3); - Stack.push(4); - Stack.push(5); + stack.push(3); + stack.push(4); + stack.push(5); System.out.println("Testing :"); - Stack.print(); // prints : 5 4 3 + stack.print(); // prints : 5 4 3 - Integer x = Stack.pop(); // x = 5 - Stack.push(1); - Stack.push(8); - Integer y = Stack.peek(); // y = 8 + Integer x = stack.pop(); // x = 5 + stack.push(1); + stack.push(8); + Integer y = stack.peek(); // y = 8 System.out.println("Testing :"); - Stack.print(); // prints : 8 1 4 3 + stack.print(); // prints : 8 1 4 3 System.out.println("Testing :"); System.out.println("x : " + x); diff --git a/src/main/java/com/thealgorithms/datastructures/stacks/ReverseStack.java b/src/main/java/com/thealgorithms/datastructures/stacks/ReverseStack.java index c9d2ea05778b..84e9df96e0d9 100644 --- a/src/main/java/com/thealgorithms/datastructures/stacks/ReverseStack.java +++ b/src/main/java/com/thealgorithms/datastructures/stacks/ReverseStack.java @@ -8,7 +8,9 @@ * * @author Ishika Agarwal, 2021 */ -public class ReverseStack { +public final class ReverseStack { + private ReverseStack() { + } public static void main(String[] args) { try (Scanner sc = new Scanner(System.in)) { @@ -20,7 +22,6 @@ public static void main(String[] args) { for (i = 0; i < n; i++) { stack.push(sc.nextInt()); } - sc.close(); reverseStack(stack); System.out.println("The reversed stack is:"); while (!stack.isEmpty()) { diff --git a/src/main/java/com/thealgorithms/datastructures/stacks/StackOfLinkedList.java b/src/main/java/com/thealgorithms/datastructures/stacks/StackOfLinkedList.java index 0463018fde82..52b1c1d86c94 100644 --- a/src/main/java/com/thealgorithms/datastructures/stacks/StackOfLinkedList.java +++ b/src/main/java/com/thealgorithms/datastructures/stacks/StackOfLinkedList.java @@ -6,7 +6,9 @@ * @author Varun Upadhyay (https://github.com/varunu28) */ // An implementation of a Stack using a Linked List -class StackOfLinkedList { +final class StackOfLinkedList { + private StackOfLinkedList() { + } public static void main(String[] args) { LinkedListStack stack = new LinkedListStack(); @@ -33,7 +35,7 @@ class Node { public int data; public Node next; - public Node(int data) { + Node(int data) { this.data = data; this.next = null; } @@ -60,7 +62,7 @@ class LinkedListStack { /** * Init properties */ - public LinkedListStack() { + LinkedListStack() { head = null; size = 0; } diff --git a/src/main/java/com/thealgorithms/datastructures/trees/AVLSimple.java b/src/main/java/com/thealgorithms/datastructures/trees/AVLSimple.java index 1032daa240f8..052da616fe8e 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/AVLSimple.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/AVLSimple.java @@ -112,10 +112,10 @@ private int bf(Node node) { private Node rightRotate(Node c) { Node b = c.left; - Node T3 = b.right; + Node t3 = b.right; b.right = c; - c.left = T3; + c.left = t3; c.height = Math.max(height(c.left), height(c.right)) + 1; b.height = Math.max(height(b.left), height(b.right)) + 1; return b; @@ -123,10 +123,10 @@ private Node rightRotate(Node c) { private Node leftRotate(Node c) { Node b = c.right; - Node T3 = b.left; + Node t3 = b.left; b.left = c; - c.right = T3; + c.right = t3; c.height = Math.max(height(c.left), height(c.right)) + 1; b.height = Math.max(height(b.left), height(b.right)) + 1; return b; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/AVLTree.java b/src/main/java/com/thealgorithms/datastructures/trees/AVLTree.java index b56a71421ed3..7b959b085353 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/AVLTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/AVLTree.java @@ -9,7 +9,9 @@ private class Node { private int key; private int balance; private int height; - private Node left, right, parent; + private Node left; + private Node right; + private Node parent; Node(int k, Node p) { key = k; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/BSTFromSortedArray.java b/src/main/java/com/thealgorithms/datastructures/trees/BSTFromSortedArray.java index 9066a6f231be..1962eaa0a106 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/BSTFromSortedArray.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/BSTFromSortedArray.java @@ -9,7 +9,9 @@ * left half recursively to create left subtree 3. Use the right half * recursively to create right subtree */ -public class BSTFromSortedArray { +public final class BSTFromSortedArray { + private BSTFromSortedArray() { + } public static Node createBST(int[] array) { if (array == null || array.length == 0) { return null; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/BinaryTree.java b/src/main/java/com/thealgorithms/datastructures/trees/BinaryTree.java index d699b436d6b9..d4d677a4cda0 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/BinaryTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/BinaryTree.java @@ -47,7 +47,7 @@ static class Node { * * @param value Value to put in the node */ - public Node(int value) { + Node(int value) { data = value; left = null; right = null; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/CeilInBinarySearchTree.java b/src/main/java/com/thealgorithms/datastructures/trees/CeilInBinarySearchTree.java index 6e1454f6859b..f238b5e9fe8d 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/CeilInBinarySearchTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/CeilInBinarySearchTree.java @@ -42,7 +42,9 @@ * subtree. If left subtree returns a non-null value then that will be ceil * otherwise the root is ceil */ -public class CeilInBinarySearchTree { +public final class CeilInBinarySearchTree { + private CeilInBinarySearchTree() { + } public static Node getCeil(Node root, int key) { if (root == null) { diff --git a/src/main/java/com/thealgorithms/datastructures/trees/CheckBinaryTreeIsValidBST.java b/src/main/java/com/thealgorithms/datastructures/trees/CheckBinaryTreeIsValidBST.java index c034452f7221..0c2b44d78d74 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/CheckBinaryTreeIsValidBST.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/CheckBinaryTreeIsValidBST.java @@ -8,7 +8,9 @@ * where 'min' and 'max' values represent the child nodes (left, right). * 2. The smallest possible node value is Integer.MIN_VALUE, the biggest - Integer.MAX_VALUE. */ -public class CheckBinaryTreeIsValidBST { +public final class CheckBinaryTreeIsValidBST { + private CheckBinaryTreeIsValidBST() { + } public static boolean isBST(BinaryTree.Node root) { return isBSTUtil(root, Integer.MIN_VALUE, Integer.MAX_VALUE); } diff --git a/src/main/java/com/thealgorithms/datastructures/trees/CheckIfBinaryTreeBalanced.java b/src/main/java/com/thealgorithms/datastructures/trees/CheckIfBinaryTreeBalanced.java index 566536256558..9aa4d5a1fef2 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/CheckIfBinaryTreeBalanced.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/CheckIfBinaryTreeBalanced.java @@ -14,7 +14,9 @@ * * @author [Ian Cowan](Git-Ian Cowan) */ -public class CheckIfBinaryTreeBalanced { +public final class CheckIfBinaryTreeBalanced { + private CheckIfBinaryTreeBalanced() { + } /** * Recursive is BT balanced implementation * diff --git a/src/main/java/com/thealgorithms/datastructures/trees/CheckTreeIsSymmetric.java b/src/main/java/com/thealgorithms/datastructures/trees/CheckTreeIsSymmetric.java index def455dde051..17d84bf11d54 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/CheckTreeIsSymmetric.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/CheckTreeIsSymmetric.java @@ -30,7 +30,9 @@ * * @author kumanoit on 10/10/22 IST 12:52 AM */ -public class CheckTreeIsSymmetric { +public final class CheckTreeIsSymmetric { + private CheckTreeIsSymmetric() { + } public static boolean isSymmetric(Node root) { if (root == null) { diff --git a/src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java b/src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java index 8303c658dfb8..04caa0b9e9d2 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java @@ -17,7 +17,9 @@ * Complexity: Time: O(n) hashmap reduced iteration to find index in inorder * array Space: O(n) space taken by hashmap */ -public class CreateBinaryTreeFromInorderPreorder { +public final class CreateBinaryTreeFromInorderPreorder { + private CreateBinaryTreeFromInorderPreorder() { + } public static Node createTree(final Integer[] preorder, final Integer[] inorder) { if (preorder == null || inorder == null) { return null; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/FenwickTree.java b/src/main/java/com/thealgorithms/datastructures/trees/FenwickTree.java index 5cd28202229e..5378a01f6642 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/FenwickTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/FenwickTree.java @@ -3,12 +3,12 @@ public class FenwickTree { private int n; - private int[] fen_t; + private int[] fenTree; /* Constructor which takes the size of the array as a parameter */ public FenwickTree(int n) { this.n = n; - this.fen_t = new int[n + 1]; + this.fenTree = new int[n + 1]; } /* A function which will add the element val at index i*/ @@ -16,7 +16,7 @@ public void update(int i, int val) { // As index starts from 0, increment the index by 1 i += 1; while (i <= n) { - fen_t[i] += val; + fenTree[i] += val; i += i & (-i); } } @@ -27,7 +27,7 @@ public int query(int i) { i += 1; int cumSum = 0; while (i > 0) { - cumSum += fen_t[i]; + cumSum += fenTree[i]; i -= i & (-i); } return cumSum; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/GenericTree.java b/src/main/java/com/thealgorithms/datastructures/trees/GenericTree.java index d348467815c7..a2e36f33dd4b 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/GenericTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/GenericTree.java @@ -16,7 +16,7 @@ */ public class GenericTree { - private static class Node { + private static final class Node { int data; ArrayList child = new ArrayList<>(); @@ -25,10 +25,10 @@ private static class Node { private final Node root; public GenericTree() { // Constructor Scanner scn = new Scanner(System.in); - root = create_treeG(null, 0, scn); + root = createTreeG(null, 0, scn); } - private Node create_treeG(Node node, int childIndex, Scanner scanner) { + private Node createTreeG(Node node, int childIndex, Scanner scanner) { // display if (node == null) { System.out.println("Enter root's data"); @@ -41,7 +41,7 @@ private Node create_treeG(Node node, int childIndex, Scanner scanner) { System.out.println("number of children"); int number = scanner.nextInt(); for (int i = 0; i < number; i++) { - Node child = create_treeG(node, i, scanner); + Node child = createTreeG(node, i, scanner); node.child.add(child); } return node; @@ -51,17 +51,17 @@ private Node create_treeG(Node node, int childIndex, Scanner scanner) { * Function to display the generic tree */ public void display() { // Helper function - display_1(root); + display1(root); } - private void display_1(Node parent) { + private void display1(Node parent) { System.out.print(parent.data + "=>"); for (int i = 0; i < parent.child.size(); i++) { System.out.print(parent.child.get(i).data + " "); } System.out.println("."); for (int i = 0; i < parent.child.size(); i++) { - display_1(parent.child.get(i)); + display1(parent.child.get(i)); } } diff --git a/src/main/java/com/thealgorithms/datastructures/trees/InorderTraversal.java b/src/main/java/com/thealgorithms/datastructures/trees/InorderTraversal.java index 6441375568ad..3bae17ed1bb8 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/InorderTraversal.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/InorderTraversal.java @@ -25,7 +25,9 @@ * * @author Albina Gimaletdinova on 21/02/2023 */ -public class InorderTraversal { +public final class InorderTraversal { + private InorderTraversal() { + } public static List recursiveInorder(BinaryTree.Node root) { List result = new ArrayList<>(); recursiveInorder(root, result); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/KDTree.java b/src/main/java/com/thealgorithms/datastructures/trees/KDTree.java index 577c0055d9b6..e5528c392bb8 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/KDTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/KDTree.java @@ -68,19 +68,23 @@ public int getDimension() { return coordinates.length; } - public Point(int[] coordinates) { + Point(int[] coordinates) { this.coordinates = coordinates; } @Override public boolean equals(Object obj) { if (obj instanceof Point other) { - if (other.getDimension() != this.getDimension()) return false; return Arrays.equals(other.coordinates, this.coordinates); } return false; } + @Override + public int hashCode() { + return Arrays.hashCode(coordinates); + } + @Override public String toString() { return Arrays.toString(coordinates); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/LCA.java b/src/main/java/com/thealgorithms/datastructures/trees/LCA.java index d45f0d4f4301..95a289493007 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/LCA.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/LCA.java @@ -3,26 +3,30 @@ import java.util.ArrayList; import java.util.Scanner; -public class LCA { +public final class LCA { + private LCA() { + } - private static final Scanner scanner = new Scanner(System.in); + private static final Scanner SCANNER = new Scanner(System.in); public static void main(String[] args) { // The adjacency list representation of a tree: ArrayList> adj = new ArrayList<>(); // v is the number of vertices and e is the number of edges - int v = scanner.nextInt(), e = v - 1; + int v = SCANNER.nextInt(); + int e = v - 1; for (int i = 0; i < v; i++) { adj.add(new ArrayList()); } // Storing the given tree as an adjacency list - int to, from; + int to; + int from; for (int i = 0; i < e; i++) { - to = scanner.nextInt(); - from = scanner.nextInt(); + to = SCANNER.nextInt(); + from = SCANNER.nextInt(); adj.get(to).add(from); adj.get(from).add(to); @@ -38,7 +42,8 @@ public static void main(String[] args) { dfs(adj, 0, -1, parent, depth); // Inputting the two vertices whose LCA is to be calculated - int v1 = scanner.nextInt(), v2 = scanner.nextInt(); + int v1 = SCANNER.nextInt(); + int v2 = SCANNER.nextInt(); // Outputting the LCA System.out.println(getLCA(v1, v2, depth, parent)); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/LazySegmentTree.java b/src/main/java/com/thealgorithms/datastructures/trees/LazySegmentTree.java index b5a9db9f5e11..1d8febff4b5f 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/LazySegmentTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/LazySegmentTree.java @@ -10,12 +10,14 @@ public class LazySegmentTree { */ static class Node { - private final int start, end; // start and end of the segment represented by this node + private final int start; + private final int end; // start and end of the segment represented by this node private int value; // value is the sum of all elements in the range [start, end) private int lazy; // lazied value that should be added to children nodes - Node left, right; // left and right children + Node left; + Node right; // left and right children - public Node(int start, int end, int value) { + Node(int start, int end, int value) { this.start = start; this.end = end; this.value = value; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/LevelOrderTraversal.java b/src/main/java/com/thealgorithms/datastructures/trees/LevelOrderTraversal.java index e61085cf4def..f91aa303f66c 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/LevelOrderTraversal.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/LevelOrderTraversal.java @@ -5,7 +5,9 @@ import java.util.List; import java.util.Queue; -public class LevelOrderTraversal { +public final class LevelOrderTraversal { + private LevelOrderTraversal() { + } public static List> traverse(BinaryTree.Node root) { if (root == null) { diff --git a/src/main/java/com/thealgorithms/datastructures/trees/PostOrderTraversal.java b/src/main/java/com/thealgorithms/datastructures/trees/PostOrderTraversal.java index f7afb60ac348..50dc88381a24 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/PostOrderTraversal.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/PostOrderTraversal.java @@ -1,6 +1,10 @@ package com.thealgorithms.datastructures.trees; -import java.util.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.LinkedList; +import java.util.List; /** * Given tree is traversed in a 'post-order' way: LEFT -> RIGHT -> ROOT. @@ -22,7 +26,9 @@ * * @author Albina Gimaletdinova on 21/02/2023 */ -public class PostOrderTraversal { +public final class PostOrderTraversal { + private PostOrderTraversal() { + } public static List recursivePostOrder(BinaryTree.Node root) { List result = new ArrayList<>(); recursivePostOrder(root, result); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/PreOrderTraversal.java b/src/main/java/com/thealgorithms/datastructures/trees/PreOrderTraversal.java index d0a5bc4ac3f0..6a0eef369407 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/PreOrderTraversal.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/PreOrderTraversal.java @@ -25,7 +25,9 @@ * * @author Albina Gimaletdinova on 17/02/2023 */ -public class PreOrderTraversal { +public final class PreOrderTraversal { + private PreOrderTraversal() { + } public static List recursivePreOrder(BinaryTree.Node root) { List result = new ArrayList<>(); recursivePreOrder(root, result); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/PrintTopViewofTree.java b/src/main/java/com/thealgorithms/datastructures/trees/PrintTopViewofTree.java index a2dbeca5ebac..3ef664f3fa7d 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/PrintTopViewofTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/PrintTopViewofTree.java @@ -10,12 +10,14 @@ class TreeNode { // Members int key; - TreeNode left, right; + TreeNode left; + TreeNode right; // Constructor - public TreeNode(int key) { + TreeNode(int key) { this.key = key; - left = right = null; + left = null; + right = null; } } @@ -27,7 +29,7 @@ class QItem { TreeNode node; int hd; - public QItem(TreeNode n, int h) { + QItem(TreeNode n, int h) { node = n; hd = h; } @@ -39,11 +41,11 @@ class Tree { TreeNode root; // Constructors - public Tree() { + Tree() { root = null; } - public Tree(TreeNode n) { + Tree(TreeNode n) { root = n; } @@ -58,13 +60,13 @@ public void printTopView() { HashSet set = new HashSet<>(); // Create a queue and add root to it - Queue Q = new LinkedList(); - Q.add(new QItem(root, 0)); // Horizontal distance of root is 0 + Queue queue = new LinkedList(); + queue.add(new QItem(root, 0)); // Horizontal distance of root is 0 // Standard BFS or level order traversal loop - while (!Q.isEmpty()) { + while (!queue.isEmpty()) { // Remove the front item and get its details - QItem qi = Q.remove(); + QItem qi = queue.remove(); int hd = qi.hd; TreeNode n = qi.node; @@ -77,17 +79,19 @@ public void printTopView() { // Enqueue left and right children of current node if (n.left != null) { - Q.add(new QItem(n.left, hd - 1)); + queue.add(new QItem(n.left, hd - 1)); } if (n.right != null) { - Q.add(new QItem(n.right, hd + 1)); + queue.add(new QItem(n.right, hd + 1)); } } } } // Driver class to test above methods -public class PrintTopViewofTree { +public final class PrintTopViewofTree { + private PrintTopViewofTree() { + } public static void main(String[] args) { /* Create following Binary Tree diff --git a/src/main/java/com/thealgorithms/datastructures/trees/RedBlackBST.java b/src/main/java/com/thealgorithms/datastructures/trees/RedBlackBST.java index ebdcba40ae7c..01222b739ff0 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/RedBlackBST.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/RedBlackBST.java @@ -7,13 +7,16 @@ */ public class RedBlackBST { - private final int R = 0; - private final int B = 1; + private static final int RED = 0; + private static final int BLACK = 1; private class Node { - int key = -1, color = B; - Node left = nil, right = nil, p = nil; + int key = -1; + int color = BLACK; + Node left = nil; + Node right = nil; + Node p = nil; Node(int key) { this.key = key; @@ -28,7 +31,7 @@ public void printTree(Node node) { return; } printTree(node.left); - System.out.print(((node.color == R) ? " R " : " B ") + "Key: " + node.key + " Parent: " + node.p.key + "\n"); + System.out.print(((node.color == RED) ? " R " : " B ") + "Key: " + node.key + " Parent: " + node.p.key + "\n"); printTree(node.right); } @@ -36,7 +39,7 @@ public void printTreepre(Node node) { if (node == nil) { return; } - System.out.print(((node.color == R) ? " R " : " B ") + "Key: " + node.key + " Parent: " + node.p.key + "\n"); + System.out.print(((node.color == RED) ? " R " : " B ") + "Key: " + node.key + " Parent: " + node.p.key + "\n"); printTreepre(node.left); printTreepre(node.right); } @@ -63,10 +66,10 @@ private void insert(Node node) { Node temp = root; if (root == nil) { root = node; - node.color = B; + node.color = BLACK; node.p = nil; } else { - node.color = R; + node.color = RED; while (true) { if (node.key < temp.key) { if (temp.left == nil) { @@ -91,15 +94,15 @@ private void insert(Node node) { } private void fixTree(Node node) { - while (node.p.color == R) { + while (node.p.color == RED) { Node y = nil; if (node.p == node.p.p.left) { y = node.p.p.right; - if (y != nil && y.color == R) { - node.p.color = B; - y.color = B; - node.p.p.color = R; + if (y != nil && y.color == RED) { + node.p.color = BLACK; + y.color = BLACK; + node.p.p.color = RED; node = node.p.p; continue; } @@ -107,15 +110,15 @@ private void fixTree(Node node) { node = node.p; rotateLeft(node); } - node.p.color = B; - node.p.p.color = R; + node.p.color = BLACK; + node.p.p.color = RED; rotateRight(node.p.p); } else { y = node.p.p.left; - if (y != nil && y.color == R) { - node.p.color = B; - y.color = B; - node.p.p.color = R; + if (y != nil && y.color == RED) { + node.p.color = BLACK; + y.color = BLACK; + node.p.p.color = RED; node = node.p.p; continue; } @@ -123,12 +126,12 @@ private void fixTree(Node node) { node = node.p; rotateRight(node); } - node.p.color = B; - node.p.p.color = R; + node.p.color = BLACK; + node.p.p.color = RED; rotateLeft(node.p.p); } } - root.color = B; + root.color = BLACK; } void rotateLeft(Node node) { @@ -201,7 +204,8 @@ Node treeMinimum(Node subTreeRoot) { } boolean delete(Node z) { - if ((z = findNode(z, root)) == null) { + Node result = findNode(z, root); + if (result == null) { return false; } Node x; @@ -230,67 +234,67 @@ boolean delete(Node z) { y.left.p = y; y.color = z.color; } - if (yorigcolor == B) { + if (yorigcolor == BLACK) { deleteFixup(x); } return true; } void deleteFixup(Node x) { - while (x != root && x.color == B) { + while (x != root && x.color == BLACK) { if (x == x.p.left) { Node w = x.p.right; - if (w.color == R) { - w.color = B; - x.p.color = R; + if (w.color == RED) { + w.color = BLACK; + x.p.color = RED; rotateLeft(x.p); w = x.p.right; } - if (w.left.color == B && w.right.color == B) { - w.color = R; + if (w.left.color == BLACK && w.right.color == BLACK) { + w.color = RED; x = x.p; continue; - } else if (w.right.color == B) { - w.left.color = B; - w.color = R; + } else if (w.right.color == BLACK) { + w.left.color = BLACK; + w.color = RED; rotateRight(w); w = x.p.right; } - if (w.right.color == R) { + if (w.right.color == RED) { w.color = x.p.color; - x.p.color = B; - w.right.color = B; + x.p.color = BLACK; + w.right.color = BLACK; rotateLeft(x.p); x = root; } } else { Node w = x.p.left; - if (w.color == R) { - w.color = B; - x.p.color = R; + if (w.color == RED) { + w.color = BLACK; + x.p.color = RED; rotateRight(x.p); w = x.p.left; } - if (w.right.color == B && w.left.color == B) { - w.color = R; + if (w.right.color == BLACK && w.left.color == BLACK) { + w.color = RED; x = x.p; continue; - } else if (w.left.color == B) { - w.right.color = B; - w.color = R; + } else if (w.left.color == BLACK) { + w.right.color = BLACK; + w.color = RED; rotateLeft(w); w = x.p.left; } - if (w.left.color == R) { + if (w.left.color == RED) { w.color = x.p.color; - x.p.color = B; - w.left.color = B; + x.p.color = BLACK; + w.left.color = BLACK; rotateRight(x.p); x = root; } } } - x.color = B; + x.color = BLACK; } public void insertDemo() { diff --git a/src/main/java/com/thealgorithms/datastructures/trees/SameTreesCheck.java b/src/main/java/com/thealgorithms/datastructures/trees/SameTreesCheck.java index aede2a23b544..883eadd1840a 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/SameTreesCheck.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/SameTreesCheck.java @@ -32,7 +32,9 @@ * * @author Albina Gimaletdinova on 13/01/2023 */ -public class SameTreesCheck { +public final class SameTreesCheck { + private SameTreesCheck() { + } public static boolean check(BinaryTree.Node p, BinaryTree.Node q) { if (p == null && q == null) { return true; diff --git a/src/main/java/com/thealgorithms/datastructures/trees/SegmentTree.java b/src/main/java/com/thealgorithms/datastructures/trees/SegmentTree.java index 295628334516..57b3edc163ca 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/SegmentTree.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/SegmentTree.java @@ -2,7 +2,7 @@ public class SegmentTree { - private int[] seg_t; + private int[] segTree; private int n; private int[] arr; @@ -10,38 +10,38 @@ public class SegmentTree { public SegmentTree(int n, int[] arr) { this.n = n; int x = (int) (Math.ceil(Math.log(n) / Math.log(2))); - int seg_size = 2 * (int) Math.pow(2, x) - 1; + int segSize = 2 * (int) Math.pow(2, x) - 1; - this.seg_t = new int[seg_size]; + this.segTree = new int[segSize]; this.arr = arr; this.n = n; constructTree(arr, 0, n - 1, 0); } /* A function which will create the segment tree*/ - public int constructTree(int[] arr, int start, int end, int index) { + public final int constructTree(int[] arr, int start, int end, int index) { if (start == end) { - this.seg_t[index] = arr[start]; + this.segTree[index] = arr[start]; return arr[start]; } int mid = start + (end - start) / 2; - this.seg_t[index] = constructTree(arr, start, mid, index * 2 + 1) + constructTree(arr, mid + 1, end, index * 2 + 2); - return this.seg_t[index]; + this.segTree[index] = constructTree(arr, start, mid, index * 2 + 1) + constructTree(arr, mid + 1, end, index * 2 + 2); + return this.segTree[index]; } /* A function which will update the value at a index i. This will be called by the update function internally*/ - private void updateTree(int start, int end, int index, int diff, int seg_index) { + private void updateTree(int start, int end, int index, int diff, int segIndex) { if (index < start || index > end) { return; } - this.seg_t[seg_index] += diff; + this.segTree[segIndex] += diff; if (start != end) { int mid = start + (end - start) / 2; - updateTree(start, mid, index, diff, seg_index * 2 + 1); - updateTree(mid + 1, end, index, diff, seg_index * 2 + 2); + updateTree(start, mid, index, diff, segIndex * 2 + 1); + updateTree(mid + 1, end, index, diff, segIndex * 2 + 2); } } @@ -58,17 +58,17 @@ public void update(int index, int value) { /* A function to get the sum of the elements from index l to index r. This will be called * internally*/ - private int getSumTree(int start, int end, int q_start, int q_end, int seg_index) { - if (q_start <= start && q_end >= end) { - return this.seg_t[seg_index]; + private int getSumTree(int start, int end, int qStart, int qEnd, int segIndex) { + if (qStart <= start && qEnd >= end) { + return this.segTree[segIndex]; } - if (q_start > end || q_end < start) { + if (qStart > end || qEnd < start) { return 0; } int mid = start + (end - start) / 2; - return (getSumTree(start, mid, q_start, q_end, seg_index * 2 + 1) + getSumTree(mid + 1, end, q_start, q_end, seg_index * 2 + 2)); + return (getSumTree(start, mid, qStart, qEnd, segIndex * 2 + 1) + getSumTree(mid + 1, end, qStart, qEnd, segIndex * 2 + 2)); } /* A function to query the sum of the subarray [start...end]*/ diff --git a/src/main/java/com/thealgorithms/datastructures/trees/TreeRandomNode.java b/src/main/java/com/thealgorithms/datastructures/trees/TreeRandomNode.java index eeb253d9d342..cf56731fb079 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/TreeRandomNode.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/TreeRandomNode.java @@ -26,10 +26,11 @@ the inOrder() method to store the values in the arraylist, then find the size of public class TreeRandomNode { - private class Node { + private final class Node { int item; - Node left, right; + Node left; + Node right; } // Using an arraylist to store the inorder traversal of the given binary tree diff --git a/src/main/java/com/thealgorithms/datastructures/trees/VerticalOrderTraversal.java b/src/main/java/com/thealgorithms/datastructures/trees/VerticalOrderTraversal.java index a42b4370de68..c1d15390d4b9 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/VerticalOrderTraversal.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/VerticalOrderTraversal.java @@ -20,7 +20,9 @@ the sequence will be : 4 2 7 1 5 9 3 8 6 10 */ -public class VerticalOrderTraversal { +public final class VerticalOrderTraversal { + private VerticalOrderTraversal() { + } /*Function that receives a root Node and prints the tree in Vertical Order.*/ @@ -45,7 +47,8 @@ public static ArrayList verticalTraversal(BinaryTree.Node root) { /* min and max stores leftmost and right most index to later print the tree in vertical fashion.*/ - int max = 0, min = 0; + int max = 0; + int min = 0; queue.offer(root); index.offer(0); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/ZigzagTraversal.java b/src/main/java/com/thealgorithms/datastructures/trees/ZigzagTraversal.java index d5bfd68e97e4..84fe0eb2c42a 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/ZigzagTraversal.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/ZigzagTraversal.java @@ -1,6 +1,10 @@ package com.thealgorithms.datastructures.trees; -import java.util.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.LinkedList; +import java.util.List; /** * Given a binary tree. @@ -30,7 +34,9 @@ * * @author Albina Gimaletdinova on 11/01/2023 */ -public class ZigzagTraversal { +public final class ZigzagTraversal { + private ZigzagTraversal() { + } public static List> traverse(BinaryTree.Node root) { if (root == null) { return List.of(); diff --git a/src/main/java/com/thealgorithms/datastructures/trees/nearestRightKey.java b/src/main/java/com/thealgorithms/datastructures/trees/nearestRightKey.java index 913ccda3828c..6c53666e5856 100644 --- a/src/main/java/com/thealgorithms/datastructures/trees/nearestRightKey.java +++ b/src/main/java/com/thealgorithms/datastructures/trees/nearestRightKey.java @@ -3,10 +3,12 @@ import java.util.Scanner; import java.util.concurrent.ThreadLocalRandom; -class Main { +final class NearestRightKey { + private NearestRightKey() { + } public static void main(String[] args) { - NRKTree root = BuildTree(); + NRKTree root = buildTree(); Scanner sc = new Scanner(System.in); System.out.print("Enter first number: "); int inputX0 = sc.nextInt(); @@ -15,7 +17,7 @@ public static void main(String[] args) { sc.close(); } - public static NRKTree BuildTree() { + public static NRKTree buildTree() { int randomX = ThreadLocalRandom.current().nextInt(0, 100 + 1); NRKTree root = new NRKTree(null, null, randomX); @@ -53,13 +55,13 @@ class NRKTree { public NRKTree right; public int data; - public NRKTree(int x) { + NRKTree(int x) { this.left = null; this.right = null; this.data = x; } - public NRKTree(NRKTree right, NRKTree left, int x) { + NRKTree(NRKTree right, NRKTree left, int x) { this.left = left; this.right = right; this.data = x; diff --git a/src/main/java/com/thealgorithms/divideandconquer/BinaryExponentiation.java b/src/main/java/com/thealgorithms/divideandconquer/BinaryExponentiation.java index a70b16b0d069..de829585891a 100644 --- a/src/main/java/com/thealgorithms/divideandconquer/BinaryExponentiation.java +++ b/src/main/java/com/thealgorithms/divideandconquer/BinaryExponentiation.java @@ -27,14 +27,15 @@ public static long calculatePower(long x, long y) { } // iterative function to calculate a to the power of b - long power(long N, long M) { - long power = N, sum = 1; - while (M > 0) { - if ((M & 1) == 1) { + long power(long n, long m) { + long power = n; + long sum = 1; + while (m > 0) { + if ((m & 1) == 1) { sum *= power; } power = power * power; - M = M >> 1; + m = m >> 1; } return sum; } diff --git a/src/main/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplication.java b/src/main/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplication.java index 4c25066a3553..86a6f3e11483 100644 --- a/src/main/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplication.java +++ b/src/main/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplication.java @@ -18,124 +18,124 @@ public class StrassenMatrixMultiplication { // Function to multiply matrices - public int[][] multiply(int[][] A, int[][] B) { - int n = A.length; + public int[][] multiply(int[][] a, int[][] b) { + int n = a.length; - int[][] R = new int[n][n]; + int[][] mat = new int[n][n]; if (n == 1) { - R[0][0] = A[0][0] * B[0][0]; + mat[0][0] = a[0][0] * b[0][0]; } else { // Dividing Matrix into parts // by storing sub-parts to variables - int[][] A11 = new int[n / 2][n / 2]; - int[][] A12 = new int[n / 2][n / 2]; - int[][] A21 = new int[n / 2][n / 2]; - int[][] A22 = new int[n / 2][n / 2]; - int[][] B11 = new int[n / 2][n / 2]; - int[][] B12 = new int[n / 2][n / 2]; - int[][] B21 = new int[n / 2][n / 2]; - int[][] B22 = new int[n / 2][n / 2]; + int[][] a11 = new int[n / 2][n / 2]; + int[][] a12 = new int[n / 2][n / 2]; + int[][] a21 = new int[n / 2][n / 2]; + int[][] a22 = new int[n / 2][n / 2]; + int[][] b11 = new int[n / 2][n / 2]; + int[][] b12 = new int[n / 2][n / 2]; + int[][] b21 = new int[n / 2][n / 2]; + int[][] b22 = new int[n / 2][n / 2]; // Dividing matrix A into 4 parts - split(A, A11, 0, 0); - split(A, A12, 0, n / 2); - split(A, A21, n / 2, 0); - split(A, A22, n / 2, n / 2); + split(a, a11, 0, 0); + split(a, a12, 0, n / 2); + split(a, a21, n / 2, 0); + split(a, a22, n / 2, n / 2); // Dividing matrix B into 4 parts - split(B, B11, 0, 0); - split(B, B12, 0, n / 2); - split(B, B21, n / 2, 0); - split(B, B22, n / 2, n / 2); + split(b, b11, 0, 0); + split(b, b12, 0, n / 2); + split(b, b21, n / 2, 0); + split(b, b22, n / 2, n / 2); // Using Formulas as described in algorithm - // M1:=(A1+A3)×(B1+B2) - int[][] M1 = multiply(add(A11, A22), add(B11, B22)); + // m1:=(A1+A3)×(B1+B2) + int[][] m1 = multiply(add(a11, a22), add(b11, b22)); - // M2:=(A2+A4)×(B3+B4) - int[][] M2 = multiply(add(A21, A22), B11); + // m2:=(A2+A4)×(B3+B4) + int[][] m2 = multiply(add(a21, a22), b11); - // M3:=(A1−A4)×(B1+A4) - int[][] M3 = multiply(A11, sub(B12, B22)); + // m3:=(A1−A4)×(B1+A4) + int[][] m3 = multiply(a11, sub(b12, b22)); - // M4:=A1×(B2−B4) - int[][] M4 = multiply(A22, sub(B21, B11)); + // m4:=A1×(B2−B4) + int[][] m4 = multiply(a22, sub(b21, b11)); - // M5:=(A3+A4)×(B1) - int[][] M5 = multiply(add(A11, A12), B22); + // m5:=(A3+A4)×(B1) + int[][] m5 = multiply(add(a11, a12), b22); - // M6:=(A1+A2)×(B4) - int[][] M6 = multiply(sub(A21, A11), add(B11, B12)); + // m6:=(A1+A2)×(B4) + int[][] m6 = multiply(sub(a21, a11), add(b11, b12)); - // M7:=A4×(B3−B1) - int[][] M7 = multiply(sub(A12, A22), add(B21, B22)); + // m7:=A4×(B3−B1) + int[][] m7 = multiply(sub(a12, a22), add(b21, b22)); - // P:=M2+M3−M6−M7 - int[][] C11 = add(sub(add(M1, M4), M5), M7); + // P:=m2+m3−m6−m7 + int[][] c11 = add(sub(add(m1, m4), m5), m7); - // Q:=M4+M6 - int[][] C12 = add(M3, M5); + // Q:=m4+m6 + int[][] c12 = add(m3, m5); - // R:=M5+M7 - int[][] C21 = add(M2, M4); + // mat:=m5+m7 + int[][] c21 = add(m2, m4); - // S:=M1−M3−M4−M5 - int[][] C22 = add(sub(add(M1, M3), M2), M6); + // S:=m1−m3−m4−m5 + int[][] c22 = add(sub(add(m1, m3), m2), m6); - join(C11, R, 0, 0); - join(C12, R, 0, n / 2); - join(C21, R, n / 2, 0); - join(C22, R, n / 2, n / 2); + join(c11, mat, 0, 0); + join(c12, mat, 0, n / 2); + join(c21, mat, n / 2, 0); + join(c22, mat, n / 2, n / 2); } - return R; + return mat; } // Function to subtract two matrices - public int[][] sub(int[][] A, int[][] B) { - int n = A.length; + public int[][] sub(int[][] a, int[][] b) { + int n = a.length; - int[][] C = new int[n][n]; + int[][] c = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { - C[i][j] = A[i][j] - B[i][j]; + c[i][j] = a[i][j] - b[i][j]; } } - return C; + return c; } // Function to add two matrices - public int[][] add(int[][] A, int[][] B) { - int n = A.length; + public int[][] add(int[][] a, int[][] b) { + int n = a.length; - int[][] C = new int[n][n]; + int[][] c = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { - C[i][j] = A[i][j] + B[i][j]; + c[i][j] = a[i][j] + b[i][j]; } } - return C; + return c; } // Function to split parent matrix into child matrices - public void split(int[][] P, int[][] C, int iB, int jB) { - for (int i1 = 0, i2 = iB; i1 < C.length; i1++, i2++) { - for (int j1 = 0, j2 = jB; j1 < C.length; j1++, j2++) { - C[i1][j1] = P[i2][j2]; + public void split(int[][] p, int[][] c, int iB, int jB) { + for (int i1 = 0, i2 = iB; i1 < c.length; i1++, i2++) { + for (int j1 = 0, j2 = jB; j1 < c.length; j1++, j2++) { + c[i1][j1] = p[i2][j2]; } } } // Function to join child matrices into (to) parent matrix - public void join(int[][] C, int[][] P, int iB, int jB) { - for (int i1 = 0, i2 = iB; i1 < C.length; i1++, i2++) { - for (int j1 = 0, j2 = jB; j1 < C.length; j1++, j2++) { - P[i2][j2] = C[i1][j1]; + public void join(int[][] c, int[][] p, int iB, int jB) { + for (int i1 = 0, i2 = iB; i1 < c.length; i1++, i2++) { + for (int j1 = 0, j2 = jB; j1 < c.length; j1++, j2++) { + p[i2][j2] = c[i1][j1]; } } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/BoardPath.java b/src/main/java/com/thealgorithms/dynamicprogramming/BoardPath.java index 7deb81448b55..b041cfc478d6 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/BoardPath.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/BoardPath.java @@ -25,7 +25,9 @@ */ -public class BoardPath { +public final class BoardPath { + private BoardPath() { + } public static long startTime; public static long endTime; diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/BoundaryFill.java b/src/main/java/com/thealgorithms/dynamicprogramming/BoundaryFill.java index 52d7bffa4980..3fa8728930cb 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/BoundaryFill.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/BoundaryFill.java @@ -4,50 +4,52 @@ * Java program for Boundary fill algorithm. * @author Akshay Dubey (https://github.com/itsAkshayDubey) */ -public class BoundaryFill { +public final class BoundaryFill { + private BoundaryFill() { + } /** * Get the color at the given co-odrinates of a 2D image * * @param image The image to be filled - * @param x_co_ordinate The x co-ordinate of which color is to be obtained - * @param y_co_ordinate The y co-ordinate of which color is to be obtained + * @param xCoordinate The x co-ordinate of which color is to be obtained + * @param yCoordinate The y co-ordinate of which color is to be obtained */ - public static int getPixel(int[][] image, int x_co_ordinate, int y_co_ordinate) { - return image[x_co_ordinate][y_co_ordinate]; + public static int getPixel(int[][] image, int xCoordinate, int yCoordinate) { + return image[xCoordinate][yCoordinate]; } /** * Put the color at the given co-odrinates of a 2D image * * @param image The image to be filed - * @param x_co_ordinate The x co-ordinate at which color is to be filled - * @param y_co_ordinate The y co-ordinate at which color is to be filled + * @param xCoordinate The x co-ordinate at which color is to be filled + * @param yCoordinate The y co-ordinate at which color is to be filled */ - public static void putPixel(int[][] image, int x_co_ordinate, int y_co_ordinate, int new_color) { - image[x_co_ordinate][y_co_ordinate] = new_color; + public static void putPixel(int[][] image, int xCoordinate, int yCoordinate, int newColor) { + image[xCoordinate][yCoordinate] = newColor; } /** * Fill the 2D image with new color * * @param image The image to be filed - * @param x_co_ordinate The x co-ordinate at which color is to be filled - * @param y_co_ordinate The y co-ordinate at which color is to be filled - * @param new_color The new color which to be filled in the image - * @param boundary_color The old color which is to be replaced in the image + * @param xCoordinate The x co-ordinate at which color is to be filled + * @param yCoordinate The y co-ordinate at which color is to be filled + * @param newColor The new color which to be filled in the image + * @param boundaryColor The old color which is to be replaced in the image */ - public static void boundaryFill(int[][] image, int x_co_ordinate, int y_co_ordinate, int new_color, int boundary_color) { - if (x_co_ordinate >= 0 && y_co_ordinate >= 0 && getPixel(image, x_co_ordinate, y_co_ordinate) != new_color && getPixel(image, x_co_ordinate, y_co_ordinate) != boundary_color) { - putPixel(image, x_co_ordinate, y_co_ordinate, new_color); - boundaryFill(image, x_co_ordinate + 1, y_co_ordinate, new_color, boundary_color); - boundaryFill(image, x_co_ordinate - 1, y_co_ordinate, new_color, boundary_color); - boundaryFill(image, x_co_ordinate, y_co_ordinate + 1, new_color, boundary_color); - boundaryFill(image, x_co_ordinate, y_co_ordinate - 1, new_color, boundary_color); - boundaryFill(image, x_co_ordinate + 1, y_co_ordinate - 1, new_color, boundary_color); - boundaryFill(image, x_co_ordinate - 1, y_co_ordinate + 1, new_color, boundary_color); - boundaryFill(image, x_co_ordinate + 1, y_co_ordinate + 1, new_color, boundary_color); - boundaryFill(image, x_co_ordinate - 1, y_co_ordinate - 1, new_color, boundary_color); + public static void boundaryFill(int[][] image, int xCoordinate, int yCoordinate, int newColor, int boundaryColor) { + if (xCoordinate >= 0 && yCoordinate >= 0 && getPixel(image, xCoordinate, yCoordinate) != newColor && getPixel(image, xCoordinate, yCoordinate) != boundaryColor) { + putPixel(image, xCoordinate, yCoordinate, newColor); + boundaryFill(image, xCoordinate + 1, yCoordinate, newColor, boundaryColor); + boundaryFill(image, xCoordinate - 1, yCoordinate, newColor, boundaryColor); + boundaryFill(image, xCoordinate, yCoordinate + 1, newColor, boundaryColor); + boundaryFill(image, xCoordinate, yCoordinate - 1, newColor, boundaryColor); + boundaryFill(image, xCoordinate + 1, yCoordinate - 1, newColor, boundaryColor); + boundaryFill(image, xCoordinate - 1, yCoordinate + 1, newColor, boundaryColor); + boundaryFill(image, xCoordinate + 1, yCoordinate + 1, newColor, boundaryColor); + boundaryFill(image, xCoordinate - 1, yCoordinate - 1, newColor, boundaryColor); } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsack.java b/src/main/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsack.java index 77d997fc2adc..b433c44b9077 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsack.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/BruteForceKnapsack.java @@ -2,13 +2,15 @@ /* A Naive recursive implementation of 0-1 Knapsack problem */ -public class BruteForceKnapsack { +public final class BruteForceKnapsack { + private BruteForceKnapsack() { + } // Returns the maximum value that // can be put in a knapsack of // capacity W - static int knapSack(int W, int[] wt, int[] val, int n) { + static int knapSack(int w, int[] wt, int[] val, int n) { // Base Case - if (n == 0 || W == 0) { + if (n == 0 || w == 0) { return 0; } @@ -16,13 +18,13 @@ static int knapSack(int W, int[] wt, int[] val, int n) { // more than Knapsack capacity W, // then this item cannot be included // in the optimal solution - if (wt[n - 1] > W) { - return knapSack(W, wt, val, n - 1); + if (wt[n - 1] > w) { + return knapSack(w, wt, val, n - 1); } // Return the maximum of two cases: // (1) nth item included // (2) not included else { - return Math.max(val[n - 1] + knapSack(W - wt[n - 1], wt, val, n - 1), knapSack(W, wt, val, n - 1)); + return Math.max(val[n - 1] + knapSack(w - wt[n - 1], wt, val, n - 1), knapSack(w, wt, val, n - 1)); } } @@ -30,8 +32,8 @@ static int knapSack(int W, int[] wt, int[] val, int n) { public static void main(String[] args) { int[] val = new int[] {60, 100, 120}; int[] wt = new int[] {10, 20, 30}; - int W = 50; + int w = 50; int n = val.length; - System.out.println(knapSack(W, wt, val, n)); + System.out.println(knapSack(w, wt, val, n)); } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/CatalanNumber.java b/src/main/java/com/thealgorithms/dynamicprogramming/CatalanNumber.java index 5db7d39f1d99..8658bca3df52 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/CatalanNumber.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/CatalanNumber.java @@ -10,7 +10,9 @@ */ import java.util.Scanner; -public class CatalanNumber { +public final class CatalanNumber { + private CatalanNumber() { + } /** * This method finds the nth Catalan number diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java b/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java index 58ba1351109c..d79ed3c23e13 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/ClimbingStairs.java @@ -5,7 +5,9 @@ Link : https://medium.com/analytics-vidhya/leetcode-q70-climbing-stairs-easy-444a4aae54e8 */ -public class ClimbingStairs { +public final class ClimbingStairs { + private ClimbingStairs() { + } public static int numberOfWays(int n) { diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/CoinChange.java b/src/main/java/com/thealgorithms/dynamicprogramming/CoinChange.java index b5be0b2660bf..12cc29faa923 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/CoinChange.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/CoinChange.java @@ -3,7 +3,9 @@ /** * @author Varun Upadhyay (https://github.com/varunu28) */ -public class CoinChange { +public final class CoinChange { + private CoinChange() { + } // Driver Program public static void main(String[] args) { @@ -56,9 +58,9 @@ public static int minimumCoins(int[] coins, int amount) { for (int i = 1; i <= amount; i++) { for (int coin : coins) { if (coin <= i) { - int sub_res = minimumCoins[i - coin]; - if (sub_res != Integer.MAX_VALUE && sub_res + 1 < minimumCoins[i]) { - minimumCoins[i] = sub_res + 1; + int subRes = minimumCoins[i - coin]; + if (subRes != Integer.MAX_VALUE && subRes + 1 < minimumCoins[i]) { + minimumCoins[i] = subRes + 1; } } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/CountFriendsPairing.java b/src/main/java/com/thealgorithms/dynamicprogramming/CountFriendsPairing.java index e18725405394..8c70c9c3fada 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/CountFriendsPairing.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/CountFriendsPairing.java @@ -15,7 +15,9 @@ package com.thealgorithms.dynamicprogramming; -public class CountFriendsPairing { +public final class CountFriendsPairing { + private CountFriendsPairing() { + } public static boolean countFriendsPairing(int n, int[] a) { int[] dp = new int[n + 1]; diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/DiceThrow.java b/src/main/java/com/thealgorithms/dynamicprogramming/DiceThrow.java index 84f9cf6a83d8..e1be3ead5895 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/DiceThrow.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/DiceThrow.java @@ -13,7 +13,9 @@ And it can be done using Dynamic Programming(DP). // Code ----> // Java program to find number of ways to get sum 'x' with 'n' // dice where every dice has 'm' faces -class DP { +final class DP { + private DP() { + } /* The main function that returns the number of ways to get sum 'x' with 'n' dice and 'm' with m * faces. */ diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/EditDistance.java b/src/main/java/com/thealgorithms/dynamicprogramming/EditDistance.java index 68877811092e..6db30514db68 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/EditDistance.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/EditDistance.java @@ -24,7 +24,9 @@ */ import java.util.Scanner; -public class EditDistance { +public final class EditDistance { + private EditDistance() { + } public static int minDistance(String word1, String word2) { int len1 = word1.length(); @@ -69,7 +71,8 @@ then take the minimum of the various operations(i.e insertion,removal,substituti public static void main(String[] args) { Scanner input = new Scanner(System.in); - String s1, s2; + String s1; + String s2; System.out.println("Enter the First String"); s1 = input.nextLine(); System.out.println("Enter the Second String"); diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/EggDropping.java b/src/main/java/com/thealgorithms/dynamicprogramming/EggDropping.java index ef1ff49465f3..be52ab166f18 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/EggDropping.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/EggDropping.java @@ -3,12 +3,15 @@ /** * DynamicProgramming solution for the Egg Dropping Puzzle */ -public class EggDropping { +public final class EggDropping { + private EggDropping() { + } // min trials with n eggs and m floors public static int minTrials(int n, int m) { int[][] eggFloor = new int[n + 1][m + 1]; - int result, x; + int result; + int x; for (int i = 1; i <= n; i++) { eggFloor[i][0] = 0; // Zero trial for zero floor. @@ -39,7 +42,8 @@ public static int minTrials(int n, int m) { } public static void main(String[] args) { - int n = 2, m = 4; + int n = 2; + int m = 4; // result outputs min no. of trials in worst case for n eggs and m floors int result = minTrials(n, m); System.out.println(result); diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java b/src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java index f2a3b2b8f542..5855030fc65c 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java @@ -7,9 +7,11 @@ /** * @author Varun Upadhyay (https://github.com/varunu28) */ -public class Fibonacci { +public final class Fibonacci { + private Fibonacci() { + } - private static Map map = new HashMap<>(); + private static final Map CACHE = new HashMap<>(); public static void main(String[] args) { // Methods all returning [0, 1, 1, 2, 3, 5, ...] for n = [0, 1, 2, 3, 4, 5, ...] @@ -30,8 +32,8 @@ public static void main(String[] args) { * Outputs the nth fibonacci number */ public static int fibMemo(int n) { - if (map.containsKey(n)) { - return map.get(n); + if (CACHE.containsKey(n)) { + return CACHE.get(n); } int f; @@ -40,7 +42,7 @@ public static int fibMemo(int n) { f = n; } else { f = fibMemo(n - 1) + fibMemo(n - 2); - map.put(n, f); + CACHE.put(n, f); } return f; } @@ -84,7 +86,9 @@ public static int fibOptimized(int n) { if (n == 0) { return 0; } - int prev = 0, res = 1, next; + int prev = 0; + int res = 1; + int next; for (int i = 2; i <= n; i++) { next = prev + res; prev = res; @@ -106,7 +110,6 @@ public static int fibOptimized(int n) { public static int fibBinet(int n) { double squareRootOf5 = Math.sqrt(5); double phi = (1 + squareRootOf5) / 2; - int nthTerm = (int) ((Math.pow(phi, n) - Math.pow(-phi, -n)) / squareRootOf5); - return nthTerm; + return (int) ((Math.pow(phi, n) - Math.pow(-phi, -n)) / squareRootOf5); } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/FordFulkerson.java b/src/main/java/com/thealgorithms/dynamicprogramming/FordFulkerson.java index 63ec477c4590..6168ec6ec09f 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/FordFulkerson.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/FordFulkerson.java @@ -4,17 +4,20 @@ import java.util.Queue; import java.util.Vector; -public class FordFulkerson { +public final class FordFulkerson { + private FordFulkerson() { + } static final int INF = 987654321; // edges - static int V; - static int[][] capacity, flow; + static int vertexCount; + static int[][] capacity; + static int[][] flow; public static void main(String[] args) { - System.out.println("V : 6"); - V = 6; - capacity = new int[V][V]; + System.out.println("Vertex Count : 6"); + vertexCount = 6; + capacity = new int[vertexCount][vertexCount]; capacity[0][1] = 12; capacity[0][3] = 13; @@ -30,11 +33,11 @@ public static void main(String[] args) { } private static int networkFlow(int source, int sink) { - flow = new int[V][V]; + flow = new int[vertexCount][vertexCount]; int totalFlow = 0; while (true) { - Vector parent = new Vector<>(V); - for (int i = 0; i < V; i++) { + Vector parent = new Vector<>(vertexCount); + for (int i = 0; i < vertexCount; i++) { parent.add(-1); } Queue q = new LinkedList<>(); @@ -43,7 +46,7 @@ private static int networkFlow(int source, int sink) { while (!q.isEmpty() && parent.get(sink) == -1) { int here = q.peek(); q.poll(); - for (int there = 0; there < V; ++there) { + for (int there = 0; there < vertexCount; ++there) { if (capacity[here][there] - flow[here][there] > 0 && parent.get(there) == -1) { q.add(there); parent.set(there, here); diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/KadaneAlgorithm.java b/src/main/java/com/thealgorithms/dynamicprogramming/KadaneAlgorithm.java index 51cd6e50ea43..de75126044ae 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/KadaneAlgorithm.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/KadaneAlgorithm.java @@ -6,20 +6,23 @@ /** Program description - To find the maximum subarray sum */ package com.thealgorithms.dynamicprogramming; -public class KadaneAlgorithm { +public final class KadaneAlgorithm { + private KadaneAlgorithm() { + } - public static boolean max_Sum(int[] a, int predicted_answer) { - int sum = a[0], running_sum = 0; + public static boolean maxSum(int[] a, int predictedAnswer) { + int sum = a[0]; + int runningSum = 0; for (int k : a) { - running_sum = running_sum + k; + runningSum = runningSum + k; // running sum of all the indexs are stored - sum = Math.max(sum, running_sum); + sum = Math.max(sum, runningSum); // the max is stored inorder to the get the maximum sum - if (running_sum < 0) running_sum = 0; + if (runningSum < 0) runningSum = 0; // if running sum is negative then it is initialized to zero } // for-each loop is used to iterate over the array and find the maximum subarray sum - return sum == predicted_answer; + return sum == predictedAnswer; // It returns true if sum and predicted answer matches // The predicted answer is the answer itself. So it always return true } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/KnapsackMemoization.java b/src/main/java/com/thealgorithms/dynamicprogramming/KnapsackMemoization.java index 290e98caebae..396efb1a7893 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/KnapsackMemoization.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/KnapsackMemoization.java @@ -40,8 +40,15 @@ int solveKnapsackRecursive(int capacity, int[] weights, int[] profits, int numOf dpTable[numOfItems][capacity] = solveKnapsackRecursive(capacity, weights, profits, numOfItems - 1, dpTable); return dpTable[numOfItems][capacity]; } else { - // Return value of table after storing - return dpTable[numOfItems][capacity] = Math.max((profits[numOfItems - 1] + solveKnapsackRecursive(capacity - weights[numOfItems - 1], weights, profits, numOfItems - 1, dpTable)), solveKnapsackRecursive(capacity, weights, profits, numOfItems - 1, dpTable)); + // case 1. include the item, if it is less than the capacity + final int includeCurrentItem = profits[numOfItems - 1] + solveKnapsackRecursive(capacity - weights[numOfItems - 1], weights, profits, numOfItems - 1, dpTable); + + // case 2. exclude the item if it is more than the capacity + final int excludeCurrentItem = solveKnapsackRecursive(capacity, weights, profits, numOfItems - 1, dpTable); + + // Store the value of function call stack in table and return + dpTable[numOfItems][capacity] = Math.max(includeCurrentItem, excludeCurrentItem); + return dpTable[numOfItems][capacity]; } } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LevenshteinDistance.java b/src/main/java/com/thealgorithms/dynamicprogramming/LevenshteinDistance.java index c4c9bbee9a78..119d65dfe365 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LevenshteinDistance.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LevenshteinDistance.java @@ -1,49 +1,84 @@ package com.thealgorithms.dynamicprogramming; +import java.util.stream.IntStream; + /** - * @author Kshitij VERMA (github.com/kv19971) LEVENSHTEIN DISTANCE dyamic - * programming implementation to show the difference between two strings - * (https://en.wikipedia.org/wiki/Levenshtein_distance) + * Provides functions to calculate the Levenshtein distance between two strings. + * + * The Levenshtein distance is a measure of the similarity between two strings by calculating the minimum number of single-character + * edits (insertions, deletions, or substitutions) required to change one string into the other. */ -public class LevenshteinDistance { - - private static int minimum(int a, int b, int c) { - if (a < b && a < c) { - return a; - } else if (b < a && b < c) { - return b; - } else { - return c; - } +public final class LevenshteinDistance { + private LevenshteinDistance() { } - public static int calculateLevenshteinDistance(String str1, String str2) { - int len1 = str1.length() + 1; - int len2 = str2.length() + 1; - int[][] distanceMat = new int[len1][len2]; - for (int i = 0; i < len1; i++) { - distanceMat[i][0] = i; - } - for (int j = 0; j < len2; j++) { - distanceMat[0][j] = j; + /** + * Calculates the Levenshtein distance between two strings using a naive dynamic programming approach. + * + * This function computes the Levenshtein distance by constructing a dynamic programming matrix and iteratively filling it in. + * It follows the standard top-to-bottom, left-to-right approach for filling in the matrix. + * + * @param string1 The first string. + * @param string2 The second string. + * @return The Levenshtein distance between the two input strings. + * + * Time complexity: O(nm), + * Space complexity: O(nm), + * + * where n and m are lengths of `string1` and `string2`. + * + * Note that this implementation uses a straightforward dynamic programming approach without any space optimization. + * It may consume more memory for larger input strings compared to the optimized version. + */ + public static int naiveLevenshteinDistance(final String string1, final String string2) { + int[][] distanceMatrix = IntStream.rangeClosed(0, string1.length()).mapToObj(i -> IntStream.rangeClosed(0, string2.length()).map(j -> (i == 0) ? j : (j == 0) ? i : 0).toArray()).toArray(int[][] ::new); + + IntStream.range(1, string1.length() + 1).forEach(i -> IntStream.range(1, string2.length() + 1).forEach(j -> { + final int cost = (string1.charAt(i - 1) == string2.charAt(j - 1)) ? 0 : 1; + distanceMatrix[i][j] = Math.min(distanceMatrix[i - 1][j - 1] + cost, Math.min(distanceMatrix[i][j - 1] + 1, distanceMatrix[i - 1][j] + 1)); + })); + + return distanceMatrix[string1.length()][string2.length()]; + } + + /** + * Calculates the Levenshtein distance between two strings using an optimized dynamic programming approach. + * + * This edit distance is defined as 1 point per insertion, substitution, or deletion required to make the strings equal. + * + * @param string1 The first string. + * @param string2 The second string. + * @return The Levenshtein distance between the two input strings. + * + * Time complexity: O(nm), + * Space complexity: O(n), + * + * where n and m are lengths of `string1` and `string2`. + * + * Note that this implementation utilizes an optimized dynamic programming approach, significantly reducing the space complexity from O(nm) to O(n), where n and m are the lengths of `string1` and `string2`. + * + * Additionally, it minimizes space usage by leveraging the shortest string horizontally and the longest string vertically in the computation matrix. + */ + public static int optimizedLevenshteinDistance(final String string1, final String string2) { + if (string1.isEmpty()) { + return string2.length(); } - for (int i = 1; i < len1; i++) { - for (int j = 1; j < len2; j++) { - if (str1.charAt(i - 1) == str2.charAt(j - 1)) { - distanceMat[i][j] = distanceMat[i - 1][j - 1]; - } else { - distanceMat[i][j] = 1 + minimum(distanceMat[i - 1][j], distanceMat[i - 1][j - 1], distanceMat[i][j - 1]); - } + + int[] previousDistance = IntStream.rangeClosed(0, string1.length()).toArray(); + + for (int j = 1; j <= string2.length(); j++) { + int prevSubstitutionCost = previousDistance[0]; + previousDistance[0] = j; + + for (int i = 1; i <= string1.length(); i++) { + final int deletionCost = previousDistance[i] + 1; + final int insertionCost = previousDistance[i - 1] + 1; + final int substitutionCost = (string1.charAt(i - 1) == string2.charAt(j - 1)) ? prevSubstitutionCost : prevSubstitutionCost + 1; + prevSubstitutionCost = previousDistance[i]; + previousDistance[i] = Math.min(deletionCost, Math.min(insertionCost, substitutionCost)); } } - return distanceMat[len1 - 1][len2 - 1]; - } - - public static void main(String[] args) { - String str1 = ""; // enter your string here - String str2 = ""; // enter your string here - System.out.print("Levenshtein distance between " + str1 + " and " + str2 + " is: "); - System.out.println(calculateLevenshteinDistance(str1, str2)); + return previousDistance[string1.length()]; } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequence.java b/src/main/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequence.java index 5b508e036ae3..d6f9b2acf768 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequence.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequence.java @@ -11,10 +11,12 @@ x1 < x2 > x3 < x4 > x5 < …. xn or x1 > x2 < x3 > x4 < x5 > …. xn */ -public class LongestAlternatingSubsequence { +public final class LongestAlternatingSubsequence { + private LongestAlternatingSubsequence() { + } /* Function to return longest alternating subsequence length*/ - static int AlternatingLength(int[] arr, int n) { + static int alternatingLength(int[] arr, int n) { /* las[i][0] = Length of the longest @@ -32,7 +34,8 @@ static int AlternatingLength(int[] arr, int n) { int[][] las = new int[n][2]; // las = LongestAlternatingSubsequence for (int i = 0; i < n; i++) { - las[i][0] = las[i][1] = 1; + las[i][0] = 1; + las[i][1] = 1; } int result = 1; // Initialize result @@ -65,6 +68,6 @@ public static void main(String[] args) { int[] arr = {10, 22, 9, 33, 49, 50, 31, 60}; int n = arr.length; System.out.println("Length of Longest " - + "alternating subsequence is " + AlternatingLength(arr, n)); + + "alternating subsequence is " + alternatingLength(arr, n)); } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LongestCommonSubsequence.java b/src/main/java/com/thealgorithms/dynamicprogramming/LongestCommonSubsequence.java index 72fbc89397c0..2d1fa1d1153f 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LongestCommonSubsequence.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LongestCommonSubsequence.java @@ -1,6 +1,8 @@ package com.thealgorithms.dynamicprogramming; -class LongestCommonSubsequence { +final class LongestCommonSubsequence { + private LongestCommonSubsequence() { + } public static String getLCS(String str1, String str2) { // At least one string is null @@ -39,7 +41,8 @@ public static String getLCS(String str1, String str2) { public static String lcsString(String str1, String str2, int[][] lcsMatrix) { StringBuilder lcs = new StringBuilder(); - int i = str1.length(), j = str2.length(); + int i = str1.length(); + int j = str2.length(); while (i > 0 && j > 0) { if (str1.charAt(i - 1) == str2.charAt(j - 1)) { lcs.append(str1.charAt(i - 1)); diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequence.java b/src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequence.java index e7a54f213ac1..470833ce9c97 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequence.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequence.java @@ -1,24 +1,10 @@ package com.thealgorithms.dynamicprogramming; -import java.util.Scanner; - /** * @author Afrizal Fikri (https://github.com/icalF) */ -public class LongestIncreasingSubsequence { - - public static void main(String[] args) { - Scanner sc = new Scanner(System.in); - int n = sc.nextInt(); - - int[] arr = new int[n]; - for (int i = 0; i < n; i++) { - arr[i] = sc.nextInt(); - } - - System.out.println(LIS(arr)); - System.out.println(findLISLen(arr)); - sc.close(); +public final class LongestIncreasingSubsequence { + private LongestIncreasingSubsequence() { } private static int upperBound(int[] ar, int l, int r, int key) { @@ -34,19 +20,19 @@ private static int upperBound(int[] ar, int l, int r, int key) { return r; } - private static int LIS(int[] array) { - int N = array.length; - if (N == 0) { + public static int lis(int[] array) { + int len = array.length; + if (len == 0) { return 0; } - int[] tail = new int[N]; + int[] tail = new int[len]; // always points empty slot in tail int length = 1; tail[0] = array[0]; - for (int i = 1; i < N; i++) { + for (int i = 1; i < len; i++) { // new smallest value if (array[i] < tail[0]) { tail[0] = array[i]; @@ -71,14 +57,17 @@ else if (array[i] > tail[length - 1]) { */ // A function for finding the length of the LIS algorithm in O(nlogn) complexity. public static int findLISLen(int[] a) { - int size = a.length; + final int size = a.length; + if (size == 0) { + return 0; + } int[] arr = new int[size]; arr[0] = a[0]; int lis = 1; for (int i = 1; i < size; i++) { - int index = binarySearchBetween(arr, lis, a[i]); + int index = binarySearchBetween(arr, lis - 1, a[i]); arr[index] = a[i]; - if (index > lis) { + if (index == lis) { lis++; } } @@ -97,7 +86,7 @@ private static int binarySearchBetween(int[] t, int end, int key) { return end + 1; } while (left < right - 1) { - int middle = (left + right) / 2; + final int middle = (left + right) >>> 1; if (t[middle] < key) { left = middle; } else { diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubsequence.java b/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubsequence.java index c40d91100f30..0b40d4559341 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubsequence.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubsequence.java @@ -4,20 +4,22 @@ * Algorithm explanation * https://www.educative.io/edpresso/longest-palindromic-subsequence-algorithm */ -public class LongestPalindromicSubsequence { +public final class LongestPalindromicSubsequence { + private LongestPalindromicSubsequence() { + } public static void main(String[] args) { String a = "BBABCBCAB"; String b = "BABCBAB"; - String aLPS = LPS(a); - String bLPS = LPS(b); + String aLPS = lps(a); + String bLPS = lps(b); System.out.println(a + " => " + aLPS); System.out.println(b + " => " + bLPS); } - public static String LPS(String original) throws IllegalArgumentException { + public static String lps(String original) throws IllegalArgumentException { StringBuilder reverse = new StringBuilder(original); reverse = reverse.reverse(); return recursiveLPS(original, reverse.toString()); diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstring.java b/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstring.java index 0704272963fd..c6ae55919b82 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstring.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstring.java @@ -3,25 +3,28 @@ /* * Algorithm explanation https://leetcode.com/problems/longest-palindromic-substring/ */ -public class LongestPalindromicSubstring { +public final class LongestPalindromicSubstring { + private LongestPalindromicSubstring() { + } public static void main(String[] args) { String a = "babad"; String b = "cbbd"; - String aLPS = LPS(a); - String bLPS = LPS(b); + String aLPS = lps(a); + String bLPS = lps(b); System.out.println(a + " => " + aLPS); System.out.println(b + " => " + bLPS); } - private static String LPS(String input) { + private static String lps(String input) { if (input == null || input.length() == 0) { return input; } boolean[][] arr = new boolean[input.length()][input.length()]; - int start = 0, end = 0; + int start = 0; + int end = 0; for (int g = 0; g < input.length(); g++) { for (int i = 0, j = g; j < input.length(); i++, j++) { if (g == 0) { diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/LongestValidParentheses.java b/src/main/java/com/thealgorithms/dynamicprogramming/LongestValidParentheses.java index 5ceb85c984ca..02696bfca9c2 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/LongestValidParentheses.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/LongestValidParentheses.java @@ -7,7 +7,9 @@ * @author Libin Yang (https://github.com/yanglbme) * @since 2018/10/5 */ -public class LongestValidParentheses { +public final class LongestValidParentheses { + private LongestValidParentheses() { + } public static int getLongestValidParentheses(String s) { if (s == null || s.length() < 2) { diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainMultiplication.java b/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainMultiplication.java index 6dec5b418c50..45568d21f295 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainMultiplication.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainMultiplication.java @@ -4,10 +4,12 @@ import java.util.Arrays; import java.util.Scanner; -public class MatrixChainMultiplication { +public final class MatrixChainMultiplication { + private MatrixChainMultiplication() { + } - private static Scanner scan = new Scanner(System.in); - private static ArrayList mArray = new ArrayList<>(); + private static final Scanner SCANNER = new Scanner(System.in); + private static final ArrayList MATRICES = new ArrayList<>(); private static int size; private static int[][] m; private static int[][] s; @@ -24,14 +26,14 @@ public static void main(String[] args) { int row = Integer.parseInt(mSize[1]); Matrix matrix = new Matrix(count, col, row); - mArray.add(matrix); + MATRICES.add(matrix); count++; } - for (Matrix m : mArray) { + for (Matrix m : MATRICES) { System.out.format("A(%d) = %2d x %2d%n", m.count(), m.col(), m.row()); } - size = mArray.size(); + size = MATRICES.size(); m = new int[size + 1][size + 1]; s = new int[size + 1][size + 1]; p = new int[size + 1]; @@ -42,7 +44,7 @@ public static void main(String[] args) { } for (int i = 0; i < p.length; i++) { - p[i] = i == 0 ? mArray.get(i).col() : mArray.get(i - 1).row(); + p[i] = i == 0 ? MATRICES.get(i).col() : MATRICES.get(i - 1).row(); } matrixChainOrder(); @@ -109,15 +111,15 @@ private static void matrixChainOrder() { private static String[] input(String string) { System.out.print(string); - return (scan.nextLine().split(" ")); + return (SCANNER.nextLine().split(" ")); } } class Matrix { - private int count; - private int col; - private int row; + private final int count; + private final int col; + private final int row; Matrix(int count, int col, int row) { this.count = count; diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainRecursiveTopDownMemoisation.java b/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainRecursiveTopDownMemoisation.java index ed9ccd8c0073..6c1c4cf54ffc 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainRecursiveTopDownMemoisation.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/MatrixChainRecursiveTopDownMemoisation.java @@ -6,9 +6,11 @@ // matrix Ai has dimension pi−1 ×pi // , fully parenthesize the product A1A2 ···An in a way that // minimizes the number of scalar multiplications. -public class MatrixChainRecursiveTopDownMemoisation { +public final class MatrixChainRecursiveTopDownMemoisation { + private MatrixChainRecursiveTopDownMemoisation() { + } - static int Memoized_Matrix_Chain(int[] p) { + static int memoizedMatrixChain(int[] p) { int n = p.length; int[][] m = new int[n][n]; for (int i = 0; i < n; i++) { @@ -16,10 +18,10 @@ static int Memoized_Matrix_Chain(int[] p) { m[i][j] = Integer.MAX_VALUE; } } - return Lookup_Chain(m, p, 1, n - 1); + return lookupChain(m, p, 1, n - 1); } - static int Lookup_Chain(int[][] m, int[] p, int i, int j) { + static int lookupChain(int[][] m, int[] p, int i, int j) { if (i == j) { m[i][j] = 0; return m[i][j]; @@ -28,7 +30,7 @@ static int Lookup_Chain(int[][] m, int[] p, int i, int j) { return m[i][j]; } else { for (int k = i; k < j; k++) { - int q = Lookup_Chain(m, p, i, k) + Lookup_Chain(m, p, k + 1, j) + (p[i - 1] * p[k] * p[j]); + int q = lookupChain(m, p, i, k) + lookupChain(m, p, k + 1, j) + (p[i - 1] * p[k] * p[j]); if (q < m[i][j]) { m[i][j] = q; } @@ -41,6 +43,6 @@ static int Lookup_Chain(int[][] m, int[] p, int i, int j) { // respectively output should be Minimum number of multiplications is 38 public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; - System.out.println("Minimum number of multiplications is " + Memoized_Matrix_Chain(arr)); + System.out.println("Minimum number of multiplications is " + memoizedMatrixChain(arr)); } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/NewManShanksPrime.java b/src/main/java/com/thealgorithms/dynamicprogramming/NewManShanksPrime.java index 5aa0bf027c02..5d31d40dacdc 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/NewManShanksPrime.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/NewManShanksPrime.java @@ -8,18 +8,21 @@ package com.thealgorithms.dynamicprogramming; -public class NewManShanksPrime { +public final class NewManShanksPrime { + private NewManShanksPrime() { + } - public static boolean nthManShanksPrime(int n, int expected_answer) { + public static boolean nthManShanksPrime(int n, int expectedAnswer) { int[] a = new int[n + 1]; // array of n+1 size is initialized - a[0] = a[1] = 1; + a[0] = 1; + a[1] = 1; // The 0th and 1st index position values are fixed. They are initialized as 1 for (int i = 2; i <= n; i++) { a[i] = 2 * a[i - 1] + a[i - 2]; } // The loop is continued till n - return a[n] == expected_answer; + return a[n] == expectedAnswer; // returns true if calculated answer matches with expected answer } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/OptimalJobScheduling.java b/src/main/java/com/thealgorithms/dynamicprogramming/OptimalJobScheduling.java index 5ee3327553d7..0840e08c531c 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/OptimalJobScheduling.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/OptimalJobScheduling.java @@ -13,24 +13,24 @@ public class OptimalJobScheduling { private final int numberProcesses; private final int numberMachines; - private final int[][] Run; - private final int[][] Transfer; - private final int[][] Cost; + private final int[][] run; + private final int[][] transfer; + private final int[][] cost; /** * Constructor of the class. * @param numberProcesses ,refers to the number of precedent processes(N) * @param numberMachines ,refers to the number of different machines in our disposal(M) - * @param Run , N*M matrix refers to the cost of running each process to each machine - * @param Transfer ,M*M symmetric matrix refers to the transportation delay for each pair of + * @param run , N*M matrix refers to the cost of running each process to each machine + * @param transfer ,M*M symmetric matrix refers to the transportation delay for each pair of * machines */ - public OptimalJobScheduling(int numberProcesses, int numberMachines, int[][] Run, int[][] Transfer) { + public OptimalJobScheduling(int numberProcesses, int numberMachines, int[][] run, int[][] transfer) { this.numberProcesses = numberProcesses; this.numberMachines = numberMachines; - this.Run = Run; - this.Transfer = Transfer; - this.Cost = new int[numberProcesses][numberMachines]; + this.run = run; + this.transfer = transfer; + this.cost = new int[numberProcesses][numberMachines]; } /** @@ -50,7 +50,7 @@ private void calculateCost() { for (int j = 0; j < numberMachines; j++) { // for each Machine - Cost[i][j] = runningCost(i, j); + cost[i][j] = runningCost(i, j); } } } @@ -71,7 +71,7 @@ private int runningCost(int process, int machine) { if (process == 0) // refers to the first process,which does not require for a previous one // to have been executed - return Run[process][machine]; + return run[process][machine]; else { int[] runningCosts = new int[numberMachines]; // stores the costs of executing our Process depending on @@ -79,7 +79,7 @@ private int runningCost(int process, int machine) { for (int k = 0; k < numberMachines; k++) // computes the cost of executing the previous // process to each and every Machine - runningCosts[k] = Cost[process - 1][k] + Transfer[k][machine] + Run[process][machine]; // transferring the result to our Machine and executing + runningCosts[k] = cost[process - 1][k] + transfer[k][machine] + run[process][machine]; // transferring the result to our Machine and executing // the Process to our Machine return findMin(runningCosts); // returns the minimum running cost @@ -88,19 +88,19 @@ private int runningCost(int process, int machine) { /** * Function used in order to return the minimum Cost. - * @param cost ,an Array of size M which refers to the costs of executing a Process to each + * @param costArr ,an Array of size M which refers to the costs of executing a Process to each * Machine * @return the minimum cost */ - private int findMin(int[] cost) { + private int findMin(int[] costArr) { int min = 0; - for (int i = 1; i < cost.length; i++) { + for (int i = 1; i < costArr.length; i++) { - if (cost[i] < cost[min]) min = i; + if (costArr[i] < costArr[min]) min = i; } - return cost[min]; + return costArr[min]; } /** @@ -111,7 +111,7 @@ private void showResults() { for (int i = 0; i < numberProcesses; i++) { for (int j = 0; j < numberMachines; j++) { - System.out.print(Cost[i][j]); + System.out.print(cost[i][j]); System.out.print(" "); } @@ -124,6 +124,6 @@ private void showResults() { * Getter for the running Cost of i process on j machine. */ public int getCost(int process, int machine) { - return Cost[process][machine]; + return cost[process][machine]; } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/PalindromicPartitioning.java b/src/main/java/com/thealgorithms/dynamicprogramming/PalindromicPartitioning.java index 2ef7d61a355d..01fa1d19609a 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/PalindromicPartitioning.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/PalindromicPartitioning.java @@ -17,7 +17,9 @@ * "aba | b | bbabb | ababa" * @author [Syed] (https://github.com/roeticvampire) */ -public class PalindromicPartitioning { +public final class PalindromicPartitioning { + private PalindromicPartitioning() { + } public static int minimalpartitions(String word) { int len = word.length(); @@ -29,24 +31,26 @@ public static int minimalpartitions(String word) { int[] minCuts = new int[len]; boolean[][] isPalindrome = new boolean[len][len]; - int i, j, L; // different looping variables + int i; + int j; + int subLen; // different looping variables // Every substring of length 1 is a palindrome for (i = 0; i < len; i++) { isPalindrome[i][i] = true; } - /* L is substring length. Build the solution in bottom up manner by considering all + /* subLen is substring length. Build the solution in bottom up manner by considering all * substrings of length starting from 2 to n. */ - for (L = 2; L <= len; L++) { - // For substring of length L, set different possible starting indexes - for (i = 0; i < len - L + 1; i++) { - j = i + L - 1; // Ending index - // If L is 2, then we just need to + for (subLen = 2; subLen <= len; subLen++) { + // For substring of length subLen, set different possible starting indexes + for (i = 0; i < len - subLen + 1; i++) { + j = i + subLen - 1; // Ending index + // If subLen is 2, then we just need to // compare two characters. Else need to // check two corner characters and value // of P[i+1][j-1] - if (L == 2) { + if (subLen == 2) { isPalindrome[i][j] = (word.charAt(i) == word.charAt(j)); } else { isPalindrome[i][j] = (word.charAt(i) == word.charAt(j)) && isPalindrome[i + 1][j - 1]; diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/PartitionProblem.java b/src/main/java/com/thealgorithms/dynamicprogramming/PartitionProblem.java index efe5cc883daf..49c4a0a3a008 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/PartitionProblem.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/PartitionProblem.java @@ -18,7 +18,9 @@ import java.util.Arrays; -public class PartitionProblem { +public final class PartitionProblem { + private PartitionProblem() { + } /** * Test if a set of integers can be partitioned into two subsets such that the sum of elements diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/RegexMatching.java b/src/main/java/com/thealgorithms/dynamicprogramming/RegexMatching.java index cc90e56f1b6d..43427457e307 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/RegexMatching.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/RegexMatching.java @@ -12,7 +12,9 @@ * length of pat * */ -public class RegexMatching { +public final class RegexMatching { + private RegexMatching() { + } // Method 1: Using Recursion // Time Complexity=0(2^(N+M)) Space Complexity=Recursion Extra Space diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/RodCutting.java b/src/main/java/com/thealgorithms/dynamicprogramming/RodCutting.java index 4583aec2e1b4..f56fc4ff5641 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/RodCutting.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/RodCutting.java @@ -4,7 +4,9 @@ * A Dynamic Programming solution for the Rod cutting problem. * Returns the best obtainable price for a rod of length n and price[] as prices of different pieces. */ -public class RodCutting { +public final class RodCutting { + private RodCutting() { + } /** * This method calculates the maximum obtainable value for cutting a rod of length n diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/ShortestCommonSupersequenceLength.java b/src/main/java/com/thealgorithms/dynamicprogramming/ShortestCommonSupersequenceLength.java index 78baaa32e1a4..362ed5e252d2 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/ShortestCommonSupersequenceLength.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/ShortestCommonSupersequenceLength.java @@ -1,16 +1,18 @@ package com.thealgorithms.dynamicprogramming; // Java program to find length of the shortest supersequence -class ShortestSuperSequence { +final class ShortestSuperSequence { + private ShortestSuperSequence() { + } // Function to find length of the - // shortest supersequence of X and Y. - static int shortestSuperSequence(String X, String Y) { - int m = X.length(); - int n = Y.length(); + // shortest supersequence of x and y. + static int shortestSuperSequence(String x, String y) { + int m = x.length(); + int n = y.length(); // find lcs - int l = lcs(X, Y, m, n); + int l = lcs(x, y, m, n); // Result is sum of input string // lengths - length of lcs @@ -18,38 +20,39 @@ static int shortestSuperSequence(String X, String Y) { } // Returns length of LCS - // for X[0..m - 1], Y[0..n - 1] - static int lcs(String X, String Y, int m, int n) { - int[][] L = new int[m + 1][n + 1]; - int i, j; + // for x[0..m - 1], y[0..n - 1] + static int lcs(String x, String y, int m, int n) { + int[][] lN = new int[m + 1][n + 1]; + int i; + int j; - // Following steps build L[m + 1][n + 1] + // Following steps build lN[m + 1][n + 1] // in bottom up fashion. Note that - // L[i][j] contains length of LCS - // of X[0..i - 1]and Y[0..j - 1] + // lN[i][j] contains length of lNCS + // of x[0..i - 1]and y[0..j - 1] for (i = 0; i <= m; i++) { for (j = 0; j <= n; j++) { if (i == 0 || j == 0) { - L[i][j] = 0; - } else if (X.charAt(i - 1) == Y.charAt(j - 1)) { - L[i][j] = L[i - 1][j - 1] + 1; + lN[i][j] = 0; + } else if (x.charAt(i - 1) == y.charAt(j - 1)) { + lN[i][j] = lN[i - 1][j - 1] + 1; } else { - L[i][j] = Math.max(L[i - 1][j], L[i][j - 1]); + lN[i][j] = Math.max(lN[i - 1][j], lN[i][j - 1]); } } } - // L[m][n] contains length of LCS - // for X[0..n - 1] and Y[0..m - 1] - return L[m][n]; + // lN[m][n] contains length of LCS + // for x[0..n - 1] and y[0..m - 1] + return lN[m][n]; } // Driver code public static void main(String[] args) { - String X = "AGGTAB"; - String Y = "GXTXAYB"; + String x = "AGGTAB"; + String y = "GXTXAYB"; System.out.println("Length of the shortest " - + "supersequence is " + shortestSuperSequence(X, Y)); + + "supersequence is " + shortestSuperSequence(x, y)); } } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/SubsetCount.java b/src/main/java/com/thealgorithms/dynamicprogramming/SubsetCount.java index ef1c6c8f89f0..af31294f7e0e 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/SubsetCount.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/SubsetCount.java @@ -6,7 +6,9 @@ * StackOverflow(https://stackoverflow.com/questions/22891076/count-number-of-subsets-with-sum-equal-to-k) * @author Samrat Podder(https://github.com/samratpodder) */ -public class SubsetCount { +public final class SubsetCount { + private SubsetCount() { + } /** * Dynamic Programming Implementation. @@ -16,7 +18,7 @@ public class SubsetCount { * @param target is the sum of each element of the subset taken together * */ - public int getCount(int[] arr, int target) { + public static int getCount(int[] arr, int target) { /** * Base Cases - If target becomes zero, we have reached the required sum for the subset * If we reach the end of the array arr then, either if target==arr[end], then we add one to @@ -46,7 +48,7 @@ public int getCount(int[] arr, int target) { * @param arr is the input array on which subsets are to searched * @param target is the sum of each element of the subset taken together */ - public int getCountSO(int[] arr, int target) { + public static int getCountSO(int[] arr, int target) { int n = arr.length; int[] prev = new int[target + 1]; prev[0] = 1; diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/SubsetSum.java b/src/main/java/com/thealgorithms/dynamicprogramming/SubsetSum.java index 33696947c008..087d9ac2c7e7 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/SubsetSum.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/SubsetSum.java @@ -1,6 +1,8 @@ package com.thealgorithms.dynamicprogramming; -public class SubsetSum { +public final class SubsetSum { + private SubsetSum() { + } /** * Driver Code diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/SumOfSubset.java b/src/main/java/com/thealgorithms/dynamicprogramming/SumOfSubset.java index 622f8b146d96..dd48008bd21e 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/SumOfSubset.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/SumOfSubset.java @@ -1,17 +1,19 @@ package com.thealgorithms.dynamicprogramming; -public class SumOfSubset { +public final class SumOfSubset { + private SumOfSubset() { + } - public static boolean subsetSum(int[] arr, int num, int Key) { - if (Key == 0) { + public static boolean subsetSum(int[] arr, int num, int key) { + if (key == 0) { return true; } - if (num < 0 || Key < 0) { + if (num < 0 || key < 0) { return false; } - boolean include = subsetSum(arr, num - 1, Key - arr[num]); - boolean exclude = subsetSum(arr, num - 1, Key); + boolean include = subsetSum(arr, num - 1, key - arr[num]); + boolean exclude = subsetSum(arr, num - 1, key); return include || exclude; } diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java b/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java index 99f9029009ab..407566f481a0 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/Tribonacci.java @@ -4,7 +4,9 @@ * The {@code Tribonacci} class provides a method to compute the n-th number in the Tribonacci sequence. * N-th Tribonacci Number - https://leetcode.com/problems/n-th-tribonacci-number/description/ */ -public class Tribonacci { +public final class Tribonacci { + private Tribonacci() { + } /** * Computes the n-th Tribonacci number. @@ -16,7 +18,9 @@ public static int compute(int n) { if (n == 0) return 0; if (n == 1 || n == 2) return 1; - int first = 0, second = 1, third = 1; + int first = 0; + int second = 1; + int third = 1; for (int i = 3; i <= n; i++) { int next = first + second + third; diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/WildcardMatching.java b/src/main/java/com/thealgorithms/dynamicprogramming/WildcardMatching.java index a938634cdfd2..8e8bf3cc6606 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/WildcardMatching.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/WildcardMatching.java @@ -14,7 +14,9 @@ package com.thealgorithms.dynamicprogramming; -public class WildcardMatching { +public final class WildcardMatching { + private WildcardMatching() { + } public static boolean isMatch(String text, String pattern) { int m = text.length(); diff --git a/src/main/java/com/thealgorithms/dynamicprogramming/WineProblem.java b/src/main/java/com/thealgorithms/dynamicprogramming/WineProblem.java index b7eb029eaa71..0f5359f4d95e 100644 --- a/src/main/java/com/thealgorithms/dynamicprogramming/WineProblem.java +++ b/src/main/java/com/thealgorithms/dynamicprogramming/WineProblem.java @@ -10,26 +10,28 @@ * shelf. You are not allowed to reorder. You have to find the maximum profit * */ -public class WineProblem { +public final class WineProblem { + private WineProblem() { + } // Method 1: Using Recursion // Time Complexity=0(2^N) Space Complexity=Recursion extra space - public static int WPRecursion(int[] arr, int si, int ei) { + public static int wpRecursion(int[] arr, int si, int ei) { int n = arr.length; int year = (n - (ei - si + 1)) + 1; if (si == ei) { return arr[si] * year; } - int start = WPRecursion(arr, si + 1, ei) + arr[si] * year; - int end = WPRecursion(arr, si, ei - 1) + arr[ei] * year; + int start = wpRecursion(arr, si + 1, ei) + arr[si] * year; + int end = wpRecursion(arr, si, ei - 1) + arr[ei] * year; return Math.max(start, end); } // Method 2: Top-Down DP(Memoization) // Time Complexity=0(N*N) Space Complexity=0(N*N)+Recursion extra space - public static int WPTD(int[] arr, int si, int ei, int[][] strg) { + public static int wptd(int[] arr, int si, int ei, int[][] strg) { int n = arr.length; int year = (n - (ei - si + 1)) + 1; if (si == ei) { @@ -39,8 +41,8 @@ public static int WPTD(int[] arr, int si, int ei, int[][] strg) { if (strg[si][ei] != 0) { return strg[si][ei]; } - int start = WPTD(arr, si + 1, ei, strg) + arr[si] * year; - int end = WPTD(arr, si, ei - 1, strg) + arr[ei] * year; + int start = wptd(arr, si + 1, ei, strg) + arr[si] * year; + int end = wptd(arr, si, ei - 1, strg) + arr[ei] * year; int ans = Math.max(start, end); @@ -51,7 +53,7 @@ public static int WPTD(int[] arr, int si, int ei, int[][] strg) { // Method 3: Bottom-Up DP(Tabulation) // Time Complexity=0(N*N/2)->0(N*N) Space Complexity=0(N*N) - public static int WPBU(int[] arr) { + public static int wpbu(int[] arr) { int n = arr.length; int[][] strg = new int[n][n]; @@ -74,9 +76,9 @@ public static int WPBU(int[] arr) { public static void main(String[] args) { int[] arr = {2, 3, 5, 1, 4}; - System.out.println("Method 1: " + WPRecursion(arr, 0, arr.length - 1)); - System.out.println("Method 2: " + WPTD(arr, 0, arr.length - 1, new int[arr.length][arr.length])); - System.out.println("Method 3: " + WPBU(arr)); + System.out.println("Method 1: " + wpRecursion(arr, 0, arr.length - 1)); + System.out.println("Method 2: " + wptd(arr, 0, arr.length - 1, new int[arr.length][arr.length])); + System.out.println("Method 3: " + wpbu(arr)); } } // Memoization vs Tabulation : https://www.geeksforgeeks.org/tabulation-vs-memoization/ diff --git a/src/main/java/com/thealgorithms/geometry/GrahamScan.java b/src/main/java/com/thealgorithms/geometry/GrahamScan.java index 9122c6f6f3cc..4f4aebaed971 100644 --- a/src/main/java/com/thealgorithms/geometry/GrahamScan.java +++ b/src/main/java/com/thealgorithms/geometry/GrahamScan.java @@ -126,7 +126,7 @@ public Comparator polarOrder() { return new PolarOrder(); } - private class PolarOrder implements Comparator { + private final class PolarOrder implements Comparator { public int compare(Point p1, Point p2) { int dx1 = p1.x - x; int dy1 = p1.y - y; diff --git a/src/main/java/com/thealgorithms/greedyalgorithms/ActivitySelection.java b/src/main/java/com/thealgorithms/greedyalgorithms/ActivitySelection.java index 0f704dd6ed55..88fbc50129ca 100644 --- a/src/main/java/com/thealgorithms/greedyalgorithms/ActivitySelection.java +++ b/src/main/java/com/thealgorithms/greedyalgorithms/ActivitySelection.java @@ -6,11 +6,13 @@ // Problem Link: https://en.wikipedia.org/wiki/Activity_selection_problem -public class ActivitySelection { +public final class ActivitySelection { + private ActivitySelection() { + } // Function to perform activity selection - public static ArrayList activitySelection(int startTimes[], int endTimes[]) { + public static ArrayList activitySelection(int[] startTimes, int[] endTimes) { int n = startTimes.length; - int activities[][] = new int[n][3]; + int[][] activities = new int[n][3]; // Create a 2D array to store activities and their start/end times. // Each row: [activity index, start time, end time] diff --git a/src/main/java/com/thealgorithms/greedyalgorithms/CoinChange.java b/src/main/java/com/thealgorithms/greedyalgorithms/CoinChange.java index 2109e454fa4d..8054581d21d7 100644 --- a/src/main/java/com/thealgorithms/greedyalgorithms/CoinChange.java +++ b/src/main/java/com/thealgorithms/greedyalgorithms/CoinChange.java @@ -6,16 +6,17 @@ // Problem Link : https://en.wikipedia.org/wiki/Change-making_problem -public class CoinChange { +public final class CoinChange { + private CoinChange() { + } // Function to solve the coin change problem public static ArrayList coinChangeProblem(int amount) { // Define an array of coin denominations in descending order - Integer coins[] = {1, 2, 5, 10, 20, 50, 100, 500, 2000}; + Integer[] coins = {1, 2, 5, 10, 20, 50, 100, 500, 2000}; // Sort the coin denominations in descending order Arrays.sort(coins, Comparator.reverseOrder()); - int count = 0; // Variable to keep track of the total number of coins used ArrayList ans = new ArrayList<>(); // List to store selected coins // Iterate through the coin denominations @@ -24,7 +25,6 @@ public static ArrayList coinChangeProblem(int amount) { if (coins[i] <= amount) { // Repeatedly subtract the coin denomination from the remaining amount while (coins[i] <= amount) { - count++; // Increment the count of coins used ans.add(coins[i]); // Add the coin to the list of selected coins amount -= coins[i]; // Update the remaining amount } diff --git a/src/main/java/com/thealgorithms/greedyalgorithms/FractionalKnapsack.java b/src/main/java/com/thealgorithms/greedyalgorithms/FractionalKnapsack.java index f46364fc704b..082bd9c68b32 100644 --- a/src/main/java/com/thealgorithms/greedyalgorithms/FractionalKnapsack.java +++ b/src/main/java/com/thealgorithms/greedyalgorithms/FractionalKnapsack.java @@ -5,11 +5,13 @@ // Problem Link: https://en.wikipedia.org/wiki/Continuous_knapsack_problem -public class FractionalKnapsack { +public final class FractionalKnapsack { + private FractionalKnapsack() { + } // Function to perform fractional knapsack - public static int fractionalKnapsack(int weight[], int value[], int capacity) { + public static int fractionalKnapsack(int[] weight, int[] value, int capacity) { // Create a 2D array to store item indices and their value-to-weight ratios. - double ratio[][] = new double[weight.length][2]; + double[][] ratio = new double[weight.length][2]; // Populate the ratio array with item indices and their value-to-weight ratios. for (int i = 0; i < weight.length; i++) { diff --git a/src/main/java/com/thealgorithms/greedyalgorithms/JobSequencing.java b/src/main/java/com/thealgorithms/greedyalgorithms/JobSequencing.java index 4d2cf7c95a03..ceb664a31e8a 100644 --- a/src/main/java/com/thealgorithms/greedyalgorithms/JobSequencing.java +++ b/src/main/java/com/thealgorithms/greedyalgorithms/JobSequencing.java @@ -5,7 +5,9 @@ // Problem Link: https://en.wikipedia.org/wiki/Job-shop_scheduling -public class JobSequencing { +public final class JobSequencing { + private JobSequencing() { + } // Define a Job class that implements Comparable for sorting by profit in descending order static class Job implements Comparable { @@ -19,7 +21,7 @@ public int compareTo(Job otherJob) { return otherJob.profit - this.profit; } - public Job(char id, int deadline, int profit) { + Job(char id, int deadline, int profit) { this.id = id; this.deadline = deadline; this.profit = profit; @@ -29,16 +31,16 @@ public Job(char id, int deadline, int profit) { // Function to print the job sequence public static String findJobSequence(ArrayList jobs, int size) { Boolean[] slots = new Boolean[size]; - Arrays.fill(slots, false); + Arrays.fill(slots, Boolean.FALSE); - int result[] = new int[size]; + int[] result = new int[size]; // Iterate through jobs to find the optimal job sequence for (int i = 0; i < size; i++) { for (int j = jobs.get(i).deadline - 1; j >= 0; j--) { if (!slots[j]) { result[j] = i; - slots[j] = true; + slots[j] = Boolean.TRUE; break; } } diff --git a/src/main/java/com/thealgorithms/greedyalgorithms/MinimizingLateness.java b/src/main/java/com/thealgorithms/greedyalgorithms/MinimizingLateness.java index 938ae79bb625..c7f219ef3eab 100644 --- a/src/main/java/com/thealgorithms/greedyalgorithms/MinimizingLateness.java +++ b/src/main/java/com/thealgorithms/greedyalgorithms/MinimizingLateness.java @@ -2,7 +2,9 @@ import java.util.Arrays; -public class MinimizingLateness { +public final class MinimizingLateness { + private MinimizingLateness() { + } public static class Job { String jobName; diff --git a/src/main/java/com/thealgorithms/io/BufferedReader.java b/src/main/java/com/thealgorithms/io/BufferedReader.java index 477a52bb5c30..fa0237a48049 100644 --- a/src/main/java/com/thealgorithms/io/BufferedReader.java +++ b/src/main/java/com/thealgorithms/io/BufferedReader.java @@ -27,7 +27,8 @@ public class BufferedReader { /** * posRead -> indicates the next byte to read */ - private int posRead = 0, bufferPos = 0; + private int posRead = 0; + private int bufferPos = 0; private boolean foundEof = false; diff --git a/src/main/java/com/thealgorithms/maths/AbsoluteMax.java b/src/main/java/com/thealgorithms/maths/AbsoluteMax.java index 64338297e399..d0c3db3790a3 100644 --- a/src/main/java/com/thealgorithms/maths/AbsoluteMax.java +++ b/src/main/java/com/thealgorithms/maths/AbsoluteMax.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class AbsoluteMax { +public final class AbsoluteMax { + private AbsoluteMax() { + } /** * Finds the absolute maximum value among the given numbers. diff --git a/src/main/java/com/thealgorithms/maths/AbsoluteMin.java b/src/main/java/com/thealgorithms/maths/AbsoluteMin.java index 97d37dd9294a..1ffe6d2e81bc 100644 --- a/src/main/java/com/thealgorithms/maths/AbsoluteMin.java +++ b/src/main/java/com/thealgorithms/maths/AbsoluteMin.java @@ -2,7 +2,9 @@ import java.util.Arrays; -public class AbsoluteMin { +public final class AbsoluteMin { + private AbsoluteMin() { + } /** * Compares the numbers given as arguments to get the absolute min value. diff --git a/src/main/java/com/thealgorithms/maths/AbsoluteValue.java b/src/main/java/com/thealgorithms/maths/AbsoluteValue.java index 607413641392..b9279d5a244a 100644 --- a/src/main/java/com/thealgorithms/maths/AbsoluteValue.java +++ b/src/main/java/com/thealgorithms/maths/AbsoluteValue.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class AbsoluteValue { +public final class AbsoluteValue { + private AbsoluteValue() { + } /** * Returns the absolute value of a number. diff --git a/src/main/java/com/thealgorithms/maths/AliquotSum.java b/src/main/java/com/thealgorithms/maths/AliquotSum.java index daf02f14749f..5a5555777425 100644 --- a/src/main/java/com/thealgorithms/maths/AliquotSum.java +++ b/src/main/java/com/thealgorithms/maths/AliquotSum.java @@ -9,7 +9,9 @@ * are not equal to 15) are 1, 3 and 5, so the aliquot sum of 15 is 9 i.e. (1 + * 3 + 5). Wikipedia: https://en.wikipedia.org/wiki/Aliquot_sum */ -public class AliquotSum { +public final class AliquotSum { + private AliquotSum() { + } /** * Finds the aliquot sum of an integer number. diff --git a/src/main/java/com/thealgorithms/maths/AmicableNumber.java b/src/main/java/com/thealgorithms/maths/AmicableNumber.java index 23c90888ec5d..b30831bfdc58 100644 --- a/src/main/java/com/thealgorithms/maths/AmicableNumber.java +++ b/src/main/java/com/thealgorithms/maths/AmicableNumber.java @@ -19,7 +19,9 @@ * 220 is divisible by {1,2,4,5,10,11,20,22,44,55,110} <-SUM = 284 * 284 is divisible by {1,2,4,71,142} <-SUM = 220. */ -public class AmicableNumber { +public final class AmicableNumber { + private AmicableNumber() { + } /** * Finds all the amicable numbers in a given range. * diff --git a/src/main/java/com/thealgorithms/maths/Area.java b/src/main/java/com/thealgorithms/maths/Area.java index 43d35eea47b9..7a06fd5e5fa0 100644 --- a/src/main/java/com/thealgorithms/maths/Area.java +++ b/src/main/java/com/thealgorithms/maths/Area.java @@ -3,7 +3,9 @@ /** * Find the area of various geometric shapes */ -public class Area { +public final class Area { + private Area() { + } /** * String of IllegalArgumentException for radius diff --git a/src/main/java/com/thealgorithms/maths/AutoCorrelation.java b/src/main/java/com/thealgorithms/maths/AutoCorrelation.java index 5b38235bcd01..344a1271e11c 100644 --- a/src/main/java/com/thealgorithms/maths/AutoCorrelation.java +++ b/src/main/java/com/thealgorithms/maths/AutoCorrelation.java @@ -7,7 +7,9 @@ * @version 2.0 */ -public class AutoCorrelation { +public final class AutoCorrelation { + private AutoCorrelation() { + } /** * Discrete linear auto-correlation function. diff --git a/src/main/java/com/thealgorithms/maths/AutomorphicNumber.java b/src/main/java/com/thealgorithms/maths/AutomorphicNumber.java index 1e5eb32f6e8b..560ce3aabd1a 100644 --- a/src/main/java/com/thealgorithms/maths/AutomorphicNumber.java +++ b/src/main/java/com/thealgorithms/maths/AutomorphicNumber.java @@ -10,7 +10,9 @@ import java.math.BigInteger; -public class AutomorphicNumber { +public final class AutomorphicNumber { + private AutomorphicNumber() { + } /** * A function to check if a number is Automorphic number or not @@ -22,7 +24,8 @@ public class AutomorphicNumber { public static boolean isAutomorphic(long n) { if (n < 0) return false; long square = n * n; // Calculating square of the number - long t = n, numberOfdigits = 0; + long t = n; + long numberOfdigits = 0; while (t > 0) { numberOfdigits++; // Calculating number of digits in n t /= 10; diff --git a/src/main/java/com/thealgorithms/maths/Average.java b/src/main/java/com/thealgorithms/maths/Average.java index 903afbafe35f..1c632cf0a65e 100644 --- a/src/main/java/com/thealgorithms/maths/Average.java +++ b/src/main/java/com/thealgorithms/maths/Average.java @@ -3,7 +3,9 @@ /** * Calculate average of a list of numbers */ -public class Average { +public final class Average { + private Average() { + } /** * Calculate average of a list of numbers diff --git a/src/main/java/com/thealgorithms/maths/BinaryPow.java b/src/main/java/com/thealgorithms/maths/BinaryPow.java index d431d58b91b1..1550376782b1 100644 --- a/src/main/java/com/thealgorithms/maths/BinaryPow.java +++ b/src/main/java/com/thealgorithms/maths/BinaryPow.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class BinaryPow { +public final class BinaryPow { + private BinaryPow() { + } /** * Calculate a^p using binary exponentiation diff --git a/src/main/java/com/thealgorithms/maths/BinomialCoefficient.java b/src/main/java/com/thealgorithms/maths/BinomialCoefficient.java index 4009b79e5057..faec049b08a7 100644 --- a/src/main/java/com/thealgorithms/maths/BinomialCoefficient.java +++ b/src/main/java/com/thealgorithms/maths/BinomialCoefficient.java @@ -10,7 +10,9 @@ * * */ -public class BinomialCoefficient { +public final class BinomialCoefficient { + private BinomialCoefficient() { + } /** * This method returns the number of ways in which k objects can be chosen from n objects diff --git a/src/main/java/com/thealgorithms/maths/Ceil.java b/src/main/java/com/thealgorithms/maths/Ceil.java index f9b570fca76a..aacb9d969950 100644 --- a/src/main/java/com/thealgorithms/maths/Ceil.java +++ b/src/main/java/com/thealgorithms/maths/Ceil.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class Ceil { +public final class Ceil { + private Ceil() { + } /** * Returns the smallest (closest to negative infinity) diff --git a/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java b/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java index f01e029b42a6..f7010acf452d 100644 --- a/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java +++ b/src/main/java/com/thealgorithms/maths/CircularConvolutionFFT.java @@ -9,7 +9,9 @@ * @author Ioannis Karavitsis * @version 1.0 */ -public class CircularConvolutionFFT { +public final class CircularConvolutionFFT { + private CircularConvolutionFFT() { + } /** * This method pads the signal with zeros until it reaches the new size. diff --git a/src/main/java/com/thealgorithms/maths/Combinations.java b/src/main/java/com/thealgorithms/maths/Combinations.java index 68d653229fa9..2b4a78613190 100644 --- a/src/main/java/com/thealgorithms/maths/Combinations.java +++ b/src/main/java/com/thealgorithms/maths/Combinations.java @@ -3,7 +3,9 @@ /** * @see Combination */ -public class Combinations { +public final class Combinations { + private Combinations() { + } /** * Calculate of factorial diff --git a/src/main/java/com/thealgorithms/maths/Convolution.java b/src/main/java/com/thealgorithms/maths/Convolution.java index cafb36f7a2b1..93e103f8c7cf 100644 --- a/src/main/java/com/thealgorithms/maths/Convolution.java +++ b/src/main/java/com/thealgorithms/maths/Convolution.java @@ -6,19 +6,21 @@ * @author Ioannis Karavitsis * @version 1.0 */ -public class Convolution { +public final class Convolution { + private Convolution() { + } /** * Discrete linear convolution function. Both input signals and the output * signal must start from 0. If you have a signal that has values before 0 * then shift it to start from 0. * - * @param A The first discrete signal - * @param B The second discrete signal + * @param a The first discrete signal + * @param b The second discrete signal * @return The convolved signal */ - public static double[] convolution(double[] A, double[] B) { - double[] convolved = new double[A.length + B.length - 1]; + public static double[] convolution(double[] a, double[] b) { + double[] convolved = new double[a.length + b.length - 1]; /* The discrete convolution of two signals A and B is defined as: @@ -33,10 +35,10 @@ public static double[] convolution(double[] A, double[] B) { */ for (int i = 0; i < convolved.length; i++) { convolved[i] = 0; - int k = Math.max(i - B.length + 1, 0); + int k = Math.max(i - b.length + 1, 0); - while (k < i + 1 && k < A.length) { - convolved[i] += A[k] * B[i - k]; + while (k < i + 1 && k < a.length) { + convolved[i] += a[k] * b[i - k]; k++; } } diff --git a/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java b/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java index b761092ac70f..ce35b02ca13b 100644 --- a/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java +++ b/src/main/java/com/thealgorithms/maths/ConvolutionFFT.java @@ -9,7 +9,9 @@ * @author Ioannis Karavitsis * @version 1.0 */ -public class ConvolutionFFT { +public final class ConvolutionFFT { + private ConvolutionFFT() { + } /** * This method pads the signal with zeros until it reaches the new size. diff --git a/src/main/java/com/thealgorithms/maths/CrossCorrelation.java b/src/main/java/com/thealgorithms/maths/CrossCorrelation.java index 080e4ab7e74b..eeb4d6d1717a 100644 --- a/src/main/java/com/thealgorithms/maths/CrossCorrelation.java +++ b/src/main/java/com/thealgorithms/maths/CrossCorrelation.java @@ -7,7 +7,9 @@ * @version 1.0 */ -public class CrossCorrelation { +public final class CrossCorrelation { + private CrossCorrelation() { + } /** * Discrete linear cross-correlation function. @@ -20,7 +22,7 @@ public class CrossCorrelation { public static double[] crossCorrelation(double[] x, double[] y) { // The result signal's length is the sum of the input signals' lengths minus 1 double[] result = new double[x.length + y.length - 1]; - int N = result.length; + int n = result.length; /* To find the cross-correlation between 2 discrete signals x & y, we start by "placing" the second signal @@ -58,13 +60,13 @@ and for every new position (i++) of the result signal, we shift y signal one pos - To find the result[i] value for each i:0->N-1, the positions of x-signal in which the 2 signals meet + To find the result[i] value for each i:0->n-1, the positions of x-signal in which the 2 signals meet are calculated: kMin<=k<=kMax. The variable 'yStart' indicates the starting index of y in each sum calculation. The variable 'count' increases the index of y-signal by 1, to move to the next value. */ int yStart = y.length; - for (int i = 0; i < N; i++) { + for (int i = 0; i < n; i++) { result[i] = 0; int kMin = Math.max(i - (y.length - 1), 0); diff --git a/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java b/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java index 79b0dafad8f4..a2a327117700 100644 --- a/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java +++ b/src/main/java/com/thealgorithms/maths/DeterminantOfMatrix.java @@ -1,17 +1,22 @@ package com.thealgorithms.maths; -import java.util.*; +import java.util.Scanner; /* * @author Ojasva Jain * Determinant of a Matrix Wikipedia link: https://en.wikipedia.org/wiki/Determinant */ -public class DeterminantOfMatrix { +public final class DeterminantOfMatrix { + private DeterminantOfMatrix() { + } // Determinant calculator //@return determinant of the input matrix static int determinant(int[][] a, int n) { - int det = 0, sign = 1, p = 0, q = 0; + int det = 0; + int sign = 1; + int p = 0; + int q = 0; if (n == 1) { det = a[0][0]; } else { diff --git a/src/main/java/com/thealgorithms/maths/DigitalRoot.java b/src/main/java/com/thealgorithms/maths/DigitalRoot.java index 9eeb4a65f2ae..84b33f34c393 100644 --- a/src/main/java/com/thealgorithms/maths/DigitalRoot.java +++ b/src/main/java/com/thealgorithms/maths/DigitalRoot.java @@ -40,7 +40,9 @@ */ package com.thealgorithms.maths; -class DigitalRoot { +final class DigitalRoot { + private DigitalRoot() { + } public static int digitalRoot(int n) { if (single(n) <= 9) { // If n is already single digit than simply call single method and diff --git a/src/main/java/com/thealgorithms/maths/DistanceFormula.java b/src/main/java/com/thealgorithms/maths/DistanceFormula.java index 6efc2fbdff5d..f7e2c7629551 100644 --- a/src/main/java/com/thealgorithms/maths/DistanceFormula.java +++ b/src/main/java/com/thealgorithms/maths/DistanceFormula.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class DistanceFormula { +public final class DistanceFormula { + private DistanceFormula() { + } public static double euclideanDistance(double x1, double y1, double x2, double y2) { double dX = Math.pow(x2 - x1, 2); diff --git a/src/main/java/com/thealgorithms/maths/DudeneyNumber.java b/src/main/java/com/thealgorithms/maths/DudeneyNumber.java index 3bb56c5ccdb7..acf1e55d49c8 100644 --- a/src/main/java/com/thealgorithms/maths/DudeneyNumber.java +++ b/src/main/java/com/thealgorithms/maths/DudeneyNumber.java @@ -6,31 +6,23 @@ */ package com.thealgorithms.maths; -public class DudeneyNumber { +public final class DudeneyNumber { + private DudeneyNumber() { + } // returns True if the number is a Dudeney number and False if it is not a Dudeney number. - public static boolean isDudeney(int n) { + public static boolean isDudeney(final int n) { + if (n <= 0) { + throw new IllegalArgumentException("Input must me positive."); + } // Calculating Cube Root - int cube_root = (int) (Math.round((Math.pow(n, 1.0 / 3.0)))); + final int cubeRoot = (int) Math.round(Math.pow(n, 1.0 / 3.0)); // If the number is not a perfect cube the method returns false. - if (cube_root * cube_root * cube_root != n) { + if (cubeRoot * cubeRoot * cubeRoot != n) { return false; } - int sum_of_digits = 0; // Stores the sums of the digits of the entered number - int temp = n; // A temporary variable to store the entered number - // Loop to calculate the sum of the digits. - while (temp > 0) { - // Extracting the Last digit of the number - int rem = temp % 10; - - // Calculating the sum of digits. - sum_of_digits += rem; - - // Removing the last digit - temp /= 10; - } // If the cube root of the number is not equal to the sum of its digits, we return false. - return cube_root == sum_of_digits; + return cubeRoot == SumOfDigits.sumOfDigits(n); } } diff --git a/src/main/java/com/thealgorithms/maths/EulerMethod.java b/src/main/java/com/thealgorithms/maths/EulerMethod.java index 40e654626a23..3663b6c534aa 100644 --- a/src/main/java/com/thealgorithms/maths/EulerMethod.java +++ b/src/main/java/com/thealgorithms/maths/EulerMethod.java @@ -15,7 +15,9 @@ * https://en.wikipedia.org/wiki/Euler_method ) (see also: * https://www.geeksforgeeks.org/euler-method-solving-differential-equation/ ) */ -public class EulerMethod { +public final class EulerMethod { + private EulerMethod() { + } /** * Illustrates how the algorithm is used in 3 examples and prints the diff --git a/src/main/java/com/thealgorithms/maths/FFT.java b/src/main/java/com/thealgorithms/maths/FFT.java index f50bec52997b..7ca7543d7985 100644 --- a/src/main/java/com/thealgorithms/maths/FFT.java +++ b/src/main/java/com/thealgorithms/maths/FFT.java @@ -10,7 +10,9 @@ * @author Ioannis Karavitsis * @version 1.0 */ -public class FFT { +public final class FFT { + private FFT() { + } /** * This class represents a complex number and has methods for basic @@ -22,12 +24,13 @@ public class FFT { */ static class Complex { - private double real, img; + private double real; + private double img; /** * Default Constructor. Creates the complex number 0. */ - public Complex() { + Complex() { real = 0; img = 0; } @@ -38,7 +41,7 @@ public Complex() { * @param r The real part of the number. * @param i The imaginary part of the number. */ - public Complex(double r, double i) { + Complex(double r, double i) { real = r; img = i; } @@ -183,16 +186,16 @@ public Complex divide(double n) { public static ArrayList fft(ArrayList x, boolean inverse) { /* Pad the signal with zeros if necessary */ paddingPowerOfTwo(x); - int N = x.size(); - int log2N = findLog2(N); - x = fftBitReversal(N, log2N, x); + int n = x.size(); + int log2n = findLog2(n); + x = fftBitReversal(n, log2n, x); int direction = inverse ? -1 : 1; /* Main loop of the algorithm */ - for (int len = 2; len <= N; len *= 2) { + for (int len = 2; len <= n; len *= 2) { double angle = -2 * Math.PI / len * direction; Complex wlen = new Complex(Math.cos(angle), Math.sin(angle)); - for (int i = 0; i < N; i += len) { + for (int i = 0; i < n; i += len) { Complex w = new Complex(1, 0); for (int j = 0; j < len / 2; j++) { Complex u = x.get(i + j); @@ -203,24 +206,24 @@ public static ArrayList fft(ArrayList x, boolean inverse) { } } } - x = inverseFFT(N, inverse, x); + x = inverseFFT(n, inverse, x); return x; } - /* Find the log2(N) */ - public static int findLog2(int N) { - int log2N = 0; - while ((1 << log2N) < N) { - log2N++; + /* Find the log2(n) */ + public static int findLog2(int n) { + int log2n = 0; + while ((1 << log2n) < n) { + log2n++; } - return log2N; + return log2n; } /* Swap the values of the signal with bit-reversal method */ - public static ArrayList fftBitReversal(int N, int log2N, ArrayList x) { + public static ArrayList fftBitReversal(int n, int log2n, ArrayList x) { int reverse; - for (int i = 0; i < N; i++) { - reverse = reverseBits(i, log2N); + for (int i = 0; i < n; i++) { + reverse = reverseBits(i, log2n); if (i < reverse) { Collections.swap(x, i, reverse); } @@ -228,12 +231,12 @@ public static ArrayList fftBitReversal(int N, int log2N, ArrayList inverseFFT(int N, boolean inverse, ArrayList x) { + /* Divide by n if we want the inverse FFT */ + public static ArrayList inverseFFT(int n, boolean inverse, ArrayList x) { if (inverse) { for (int i = 0; i < x.size(); i++) { Complex z = x.get(i); - x.set(i, z.divide(N)); + x.set(i, z.divide(n)); } } return x; @@ -244,7 +247,7 @@ public static ArrayList inverseFFT(int N, boolean inverse, ArrayList - * E.g. num = 13 = 00001101 in binary log2N = 8 Then reversed = 176 = + * E.g. num = 13 = 00001101 in binary log2n = 8 Then reversed = 176 = * 10110000 in binary * *

@@ -252,14 +255,14 @@ public static ArrayList inverseFFT(int N, boolean inverse, ArrayList x, boolean inverse) { - int N = x.size(); - int bnSize = 2 * N - 1; + int n = x.size(); + int bnSize = 2 * n - 1; int direction = inverse ? -1 : 1; ArrayList an = new ArrayList<>(); ArrayList bn = new ArrayList<>(); @@ -36,32 +38,32 @@ public static void fftBluestein(ArrayList x, boolean inverse) { bn.add(new FFT.Complex()); } - for (int i = 0; i < N; i++) { - double angle = (i - N + 1) * (i - N + 1) * Math.PI / N * direction; + for (int i = 0; i < n; i++) { + double angle = (i - n + 1) * (i - n + 1) * Math.PI / n * direction; bn.set(i, new FFT.Complex(Math.cos(angle), Math.sin(angle))); bn.set(bnSize - i - 1, new FFT.Complex(Math.cos(angle), Math.sin(angle))); } /* Initialization of the a(n) sequence */ - for (int i = 0; i < N; i++) { - double angle = -i * i * Math.PI / N * direction; + for (int i = 0; i < n; i++) { + double angle = -i * i * Math.PI / n * direction; an.add(x.get(i).multiply(new FFT.Complex(Math.cos(angle), Math.sin(angle)))); } ArrayList convolution = ConvolutionFFT.convolutionFFT(an, bn); /* The final multiplication of the convolution with the b*(k) factor */ - for (int i = 0; i < N; i++) { - double angle = -1 * i * i * Math.PI / N * direction; + for (int i = 0; i < n; i++) { + double angle = -1 * i * i * Math.PI / n * direction; FFT.Complex bk = new FFT.Complex(Math.cos(angle), Math.sin(angle)); - x.set(i, bk.multiply(convolution.get(i + N - 1))); + x.set(i, bk.multiply(convolution.get(i + n - 1))); } - /* Divide by N if we want the inverse FFT */ + /* Divide by n if we want the inverse FFT */ if (inverse) { - for (int i = 0; i < N; i++) { + for (int i = 0; i < n; i++) { FFT.Complex z = x.get(i); - x.set(i, z.divide(N)); + x.set(i, z.divide(n)); } } } diff --git a/src/main/java/com/thealgorithms/maths/FactorialRecursion.java b/src/main/java/com/thealgorithms/maths/FactorialRecursion.java index 85e03c4dd1a4..d9bafd1e39e9 100644 --- a/src/main/java/com/thealgorithms/maths/FactorialRecursion.java +++ b/src/main/java/com/thealgorithms/maths/FactorialRecursion.java @@ -1,16 +1,8 @@ package com.thealgorithms.maths; -public class FactorialRecursion { - - /* Driver Code */ - public static void main(String[] args) { - assert factorial(0) == 1; - assert factorial(1) == 1; - assert factorial(2) == 2; - assert factorial(3) == 6; - assert factorial(5) == 120; +public final class FactorialRecursion { + private FactorialRecursion() { } - /** * Recursive FactorialRecursion Method * diff --git a/src/main/java/com/thealgorithms/maths/FastInverseSqrt.java b/src/main/java/com/thealgorithms/maths/FastInverseSqrt.java index 886337478d01..a0dbfb1f70a4 100644 --- a/src/main/java/com/thealgorithms/maths/FastInverseSqrt.java +++ b/src/main/java/com/thealgorithms/maths/FastInverseSqrt.java @@ -9,7 +9,9 @@ package com.thealgorithms.maths; -public class FastInverseSqrt { +public final class FastInverseSqrt { + private FastInverseSqrt() { + } public static boolean inverseSqrt(float number) { float x = number; diff --git a/src/main/java/com/thealgorithms/maths/FibonacciJavaStreams.java b/src/main/java/com/thealgorithms/maths/FibonacciJavaStreams.java index a9663d39a988..72bae57c27b0 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciJavaStreams.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciJavaStreams.java @@ -9,7 +9,9 @@ * @author: caos321 * @date: 14 October 2021 (Thursday) */ -public class FibonacciJavaStreams { +public final class FibonacciJavaStreams { + private FibonacciJavaStreams() { + } public static Optional calculate(final BigDecimal index) { if (index == null || index.compareTo(BigDecimal.ZERO) < 0) { diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java index 937786546fc3..781275d3130d 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java @@ -5,7 +5,9 @@ * This code checks Fibonacci Numbers up to 45th number. * Other checks fail because of 'long'-type overflow. */ -public class FibonacciNumberCheck { +public final class FibonacciNumberCheck { + private FibonacciNumberCheck() { + } /** * Check if a number is perfect square number * diff --git a/src/main/java/com/thealgorithms/maths/FindKthNumber.java b/src/main/java/com/thealgorithms/maths/FindKthNumber.java index bcb83b5ee2fc..daea3f96332b 100644 --- a/src/main/java/com/thealgorithms/maths/FindKthNumber.java +++ b/src/main/java/com/thealgorithms/maths/FindKthNumber.java @@ -6,9 +6,11 @@ /** * use quick sort algorithm to get kth largest or kth smallest element in given array */ -public class FindKthNumber { +public final class FindKthNumber { + private FindKthNumber() { + } - private static final Random random = new Random(); + private static final Random RANDOM = new Random(); public static void main(String[] args) { /* generate an array with random size and random elements */ @@ -29,17 +31,18 @@ public static void main(String[] args) { } private static int[] generateArray(int capacity) { - int size = random.nextInt(capacity) + 1; + int size = RANDOM.nextInt(capacity) + 1; int[] array = new int[size]; for (int i = 0; i < size; i++) { - array[i] = random.nextInt() % 100; + array[i] = RANDOM.nextInt() % 100; } return array; } private static int findKthMax(int[] nums, int k) { - int start = 0, end = nums.length; + int start = 0; + int end = nums.length; while (start < end) { int pivot = partition(nums, start, end); if (k == pivot) { diff --git a/src/main/java/com/thealgorithms/maths/FrizzyNumber.java b/src/main/java/com/thealgorithms/maths/FrizzyNumber.java index 3b1ff5fde3b3..3ae5e021df1b 100644 --- a/src/main/java/com/thealgorithms/maths/FrizzyNumber.java +++ b/src/main/java/com/thealgorithms/maths/FrizzyNumber.java @@ -7,7 +7,9 @@ package com.thealgorithms.maths; -public class FrizzyNumber { +public final class FrizzyNumber { + private FrizzyNumber() { + } /** * Returns the n-th number that is a sum of powers diff --git a/src/main/java/com/thealgorithms/maths/GCD.java b/src/main/java/com/thealgorithms/maths/GCD.java index 0f3125bde209..5156e4ac881d 100644 --- a/src/main/java/com/thealgorithms/maths/GCD.java +++ b/src/main/java/com/thealgorithms/maths/GCD.java @@ -6,7 +6,9 @@ * * @author Oskar Enmalm 3/10/17 */ -public class GCD { +public final class GCD { + private GCD() { + } /** * get the greatest common divisor diff --git a/src/main/java/com/thealgorithms/maths/GCDRecursion.java b/src/main/java/com/thealgorithms/maths/GCDRecursion.java index 05e44f941ac7..e95ce97c8a04 100644 --- a/src/main/java/com/thealgorithms/maths/GCDRecursion.java +++ b/src/main/java/com/thealgorithms/maths/GCDRecursion.java @@ -3,7 +3,9 @@ /** * @author https://github.com/shellhub/ */ -public class GCDRecursion { +public final class GCDRecursion { + private GCDRecursion() { + } public static void main(String[] args) { System.out.println(gcd(20, 15)); diff --git a/src/main/java/com/thealgorithms/maths/Gaussian.java b/src/main/java/com/thealgorithms/maths/Gaussian.java index 442c51e9d32d..cefbaea5b9b4 100644 --- a/src/main/java/com/thealgorithms/maths/Gaussian.java +++ b/src/main/java/com/thealgorithms/maths/Gaussian.java @@ -2,35 +2,38 @@ import java.util.ArrayList; -public class Gaussian { +public final class Gaussian { + private Gaussian() { + } - public static ArrayList gaussian(int mat_size, ArrayList matrix) { + public static ArrayList gaussian(int matSize, ArrayList matrix) { ArrayList answerArray = new ArrayList(); - int i, j = 0; + int i; + int j = 0; - double[][] mat = new double[mat_size + 1][mat_size + 1]; - double[][] x = new double[mat_size][mat_size + 1]; + double[][] mat = new double[matSize + 1][matSize + 1]; + double[][] x = new double[matSize][matSize + 1]; // Values from arraylist to matrix - for (i = 0; i < mat_size; i++) { - for (j = 0; j <= mat_size; j++) { + for (i = 0; i < matSize; i++) { + for (j = 0; j <= matSize; j++) { mat[i][j] = matrix.get(i); } } - mat = gaussianElimination(mat_size, i, mat); - answerArray = valueOfGaussian(mat_size, x, mat); + mat = gaussianElimination(matSize, i, mat); + answerArray = valueOfGaussian(matSize, x, mat); return answerArray; } // Perform Gaussian elimination - public static double[][] gaussianElimination(int mat_size, int i, double[][] mat) { + public static double[][] gaussianElimination(int matSize, int i, double[][] mat) { int step = 0; - for (step = 0; step < mat_size - 1; step++) { - for (i = step; i < mat_size - 1; i++) { + for (step = 0; step < matSize - 1; step++) { + for (i = step; i < matSize - 1; i++) { double a = (mat[i + 1][step] / mat[step][step]); - for (int j = step; j <= mat_size; j++) { + for (int j = step; j <= matSize; j++) { mat[i + 1][j] = mat[i + 1][j] - (a * mat[step][j]); } } @@ -39,26 +42,27 @@ public static double[][] gaussianElimination(int mat_size, int i, double[][] mat } // calculate the x_1, x_2, ... values of the gaussian and save it in an arraylist. - public static ArrayList valueOfGaussian(int mat_size, double[][] x, double[][] mat) { + public static ArrayList valueOfGaussian(int matSize, double[][] x, double[][] mat) { ArrayList answerArray = new ArrayList(); - int i, j; + int i; + int j; - for (i = 0; i < mat_size; i++) { - for (j = 0; j <= mat_size; j++) { + for (i = 0; i < matSize; i++) { + for (j = 0; j <= matSize; j++) { x[i][j] = mat[i][j]; } } - for (i = mat_size - 1; i >= 0; i--) { + for (i = matSize - 1; i >= 0; i--) { double sum = 0; - for (j = mat_size - 1; j > i; j--) { + for (j = matSize - 1; j > i; j--) { x[i][j] = x[j][j] * x[i][j]; sum = x[i][j] + sum; } if (x[i][i] == 0) { x[i][i] = 0; } else { - x[i][i] = (x[i][mat_size] - sum) / (x[i][i]); + x[i][i] = (x[i][matSize] - sum) / (x[i][i]); } answerArray.add(x[i][j]); } diff --git a/src/main/java/com/thealgorithms/maths/HarshadNumber.java b/src/main/java/com/thealgorithms/maths/HarshadNumber.java index 4778dc81b664..0b1ba1285c4d 100644 --- a/src/main/java/com/thealgorithms/maths/HarshadNumber.java +++ b/src/main/java/com/thealgorithms/maths/HarshadNumber.java @@ -2,7 +2,9 @@ // Wikipedia for Harshad Number : https://en.wikipedia.org/wiki/Harshad_number -public class HarshadNumber { +public final class HarshadNumber { + private HarshadNumber() { + } /** * A function to check if a number is Harshad number or not @@ -32,7 +34,7 @@ public static boolean isHarshad(long n) { * {@code false} */ public static boolean isHarshad(String s) { - long n = Long.valueOf(s); + final Long n = Long.valueOf(s); if (n <= 0) return false; int sumOfDigits = 0; diff --git a/src/main/java/com/thealgorithms/maths/JosephusProblem.java b/src/main/java/com/thealgorithms/maths/JosephusProblem.java index b878eff2b291..7d19623b3ed0 100644 --- a/src/main/java/com/thealgorithms/maths/JosephusProblem.java +++ b/src/main/java/com/thealgorithms/maths/JosephusProblem.java @@ -20,7 +20,9 @@ @author Kunal */ -public class JosephusProblem { +public final class JosephusProblem { + private JosephusProblem() { + } /** * Find the Winner of the Circular Game. diff --git a/src/main/java/com/thealgorithms/maths/JugglerSequence.java b/src/main/java/com/thealgorithms/maths/JugglerSequence.java index 216098fc926f..702310a1f295 100644 --- a/src/main/java/com/thealgorithms/maths/JugglerSequence.java +++ b/src/main/java/com/thealgorithms/maths/JugglerSequence.java @@ -11,7 +11,9 @@ * * */ -public class JugglerSequence { +public final class JugglerSequence { + private JugglerSequence() { + } /** * This method prints juggler sequence starting with the number in the parameter diff --git a/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java b/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java index d2283dc10214..f025f86682a2 100644 --- a/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java +++ b/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java @@ -1,9 +1,12 @@ package com.thealgorithms.maths; import java.math.BigInteger; -import java.util.*; +import java.util.ArrayList; +import java.util.List; -public class KaprekarNumbers { +public final class KaprekarNumbers { + private KaprekarNumbers() { + } /* This program demonstrates if a given number is Kaprekar Number or not. Kaprekar Number: A Kaprekar number is an n-digit number which its square can be split into diff --git a/src/main/java/com/thealgorithms/maths/KeithNumber.java b/src/main/java/com/thealgorithms/maths/KeithNumber.java index 1db9f9500ed1..1756cfbae91b 100644 --- a/src/main/java/com/thealgorithms/maths/KeithNumber.java +++ b/src/main/java/com/thealgorithms/maths/KeithNumber.java @@ -1,15 +1,20 @@ package com.thealgorithms.maths; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Scanner; -class KeithNumber { +final class KeithNumber { + private KeithNumber() { + } // user-defined function that checks if the given number is Keith or not static boolean isKeith(int x) { // List stores all the digits of the X - ArrayList terms = new ArrayList(); + ArrayList terms = new ArrayList<>(); // n denotes the number of digits - int temp = x, n = 0; + int temp = x; + int n = 0; // executes until the condition becomes false while (temp > 0) { // determines the last digit of the number and add it to the List @@ -21,23 +26,24 @@ static boolean isKeith(int x) { } // reverse the List Collections.reverse(terms); - int next_term = 0, i = n; + int nextTerm = 0; + int i = n; // finds next term for the series // loop executes until the condition returns true - while (next_term < x) { - next_term = 0; + while (nextTerm < x) { + nextTerm = 0; // next term is the sum of previous n terms (it depends on number of digits the number // has) for (int j = 1; j <= n; j++) { - next_term = next_term + terms.get(i - j); + nextTerm = nextTerm + terms.get(i - j); } - terms.add(next_term); + terms.add(nextTerm); i++; } // when the control comes out of the while loop, there will be two conditions: - // either next_term will be equal to x or greater than x + // either nextTerm will be equal to x or greater than x // if equal, the given number is Keith, else not - return (next_term == x); + return (nextTerm == x); } // driver code diff --git a/src/main/java/com/thealgorithms/maths/KrishnamurthyNumber.java b/src/main/java/com/thealgorithms/maths/KrishnamurthyNumber.java index eacc75c23058..f5ff50337bc7 100644 --- a/src/main/java/com/thealgorithms/maths/KrishnamurthyNumber.java +++ b/src/main/java/com/thealgorithms/maths/KrishnamurthyNumber.java @@ -5,9 +5,13 @@ to the number itself. For example, 1, 2 and 145 are Krishnamurthy numbers. Krishnamurthy number is also referred to as a Strong number. */ -import java.io.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; -public class KrishnamurthyNumber { +public final class KrishnamurthyNumber { + private KrishnamurthyNumber() { + } // returns True if the number is a Krishnamurthy number and False if it is not. diff --git a/src/main/java/com/thealgorithms/maths/LeastCommonMultiple.java b/src/main/java/com/thealgorithms/maths/LeastCommonMultiple.java index f4f7c94aa3e2..db79340f0a99 100644 --- a/src/main/java/com/thealgorithms/maths/LeastCommonMultiple.java +++ b/src/main/java/com/thealgorithms/maths/LeastCommonMultiple.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import java.util.*; +import java.util.Scanner; /** * Is a common mathematics concept to find the smallest value number @@ -9,7 +9,9 @@ * @author LauKinHoong */ -public class LeastCommonMultiple { +public final class LeastCommonMultiple { + private LeastCommonMultiple() { + } /** * Driver Code @@ -28,15 +30,18 @@ public static void main(String[] args) { * get least common multiple from two number */ public static int lcm(int num1, int num2) { - int high, num3; + int high; + int num3; int cmv = 0; /* * value selection for the numerator */ if (num1 > num2) { - high = num3 = num1; + high = num1; + num3 = num1; } else { - high = num3 = num2; + high = num2; + num3 = num2; } while (num1 != 0) { diff --git a/src/main/java/com/thealgorithms/maths/LeonardoNumber.java b/src/main/java/com/thealgorithms/maths/LeonardoNumber.java index 1ca5c8bd0fa6..bbeec052777f 100644 --- a/src/main/java/com/thealgorithms/maths/LeonardoNumber.java +++ b/src/main/java/com/thealgorithms/maths/LeonardoNumber.java @@ -3,7 +3,9 @@ /** * https://en.wikipedia.org/wiki/Leonardo_number */ -public class LeonardoNumber { +public final class LeonardoNumber { + private LeonardoNumber() { + } /** * Calculate nth Leonardo Number (1, 1, 3, 5, 9, 15, 25, 41, 67, 109, 177, ...) diff --git a/src/main/java/com/thealgorithms/maths/LinearDiophantineEquationsSolver.java b/src/main/java/com/thealgorithms/maths/LinearDiophantineEquationsSolver.java index 2d00cc5561e8..a50cfb218283 100644 --- a/src/main/java/com/thealgorithms/maths/LinearDiophantineEquationsSolver.java +++ b/src/main/java/com/thealgorithms/maths/LinearDiophantineEquationsSolver.java @@ -3,6 +3,8 @@ import java.util.Objects; public final class LinearDiophantineEquationsSolver { + private LinearDiophantineEquationsSolver() { + } public static void main(String[] args) { // 3x + 4y = 7 diff --git a/src/main/java/com/thealgorithms/maths/LiouvilleLambdaFunction.java b/src/main/java/com/thealgorithms/maths/LiouvilleLambdaFunction.java index 89acbf6a14e7..c0f55f5e3485 100644 --- a/src/main/java/com/thealgorithms/maths/LiouvilleLambdaFunction.java +++ b/src/main/java/com/thealgorithms/maths/LiouvilleLambdaFunction.java @@ -12,7 +12,9 @@ * * */ -public class LiouvilleLambdaFunction { +public final class LiouvilleLambdaFunction { + private LiouvilleLambdaFunction() { + } /** * This method returns λ(n) of given number n diff --git a/src/main/java/com/thealgorithms/maths/LongDivision.java b/src/main/java/com/thealgorithms/maths/LongDivision.java index b1c7b1901701..45e97b1c14c3 100644 --- a/src/main/java/com/thealgorithms/maths/LongDivision.java +++ b/src/main/java/com/thealgorithms/maths/LongDivision.java @@ -8,61 +8,63 @@ package com.thealgorithms.maths; -public class LongDivision { +public final class LongDivision { + private LongDivision() { + } public static int divide(int dividend, int divisor) { - long new_dividend_1 = dividend; - long new_divisor_1 = divisor; + long newDividend1 = dividend; + long newDivisor1 = divisor; if (divisor == 0) { return 0; } if (dividend < 0) { - new_dividend_1 = new_dividend_1 * -1; + newDividend1 = newDividend1 * -1; } if (divisor < 0) { - new_divisor_1 = new_divisor_1 * -1; + newDivisor1 = newDivisor1 * -1; } - if (dividend == 0 || new_dividend_1 < new_divisor_1) { + if (dividend == 0 || newDividend1 < newDivisor1) { return 0; } StringBuilder answer = new StringBuilder(); - String dividend_string = "" + new_dividend_1; - int last_index = 0; + String dividendString = "" + newDividend1; + int lastIndex = 0; String remainder = ""; - for (int i = 0; i < dividend_string.length(); i++) { - String part_v1 = remainder + "" + dividend_string.substring(last_index, i + 1); - long part_1 = Long.parseLong(part_v1); - if (part_1 > new_divisor_1) { + for (int i = 0; i < dividendString.length(); i++) { + String partV1 = remainder + "" + dividendString.substring(lastIndex, i + 1); + long part1 = Long.parseLong(partV1); + if (part1 > newDivisor1) { int quotient = 0; - while (part_1 >= new_divisor_1) { - part_1 = part_1 - new_divisor_1; + while (part1 >= newDivisor1) { + part1 = part1 - newDivisor1; quotient++; } answer.append(quotient); - } else if (part_1 == new_divisor_1) { + } else if (part1 == newDivisor1) { int quotient = 0; - while (part_1 >= new_divisor_1) { - part_1 = part_1 - new_divisor_1; + while (part1 >= newDivisor1) { + part1 = part1 - newDivisor1; quotient++; } answer.append(quotient); - } else if (part_1 == 0) { + } else if (part1 == 0) { answer.append(0); - } else if (part_1 < new_divisor_1) { + } else if (part1 < newDivisor1) { answer.append(0); } - if (!(part_1 == 0)) { - remainder = String.valueOf(part_1); + if (!(part1 == 0)) { + remainder = String.valueOf(part1); } else { remainder = ""; } - last_index++; + lastIndex++; } if ((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0)) { diff --git a/src/main/java/com/thealgorithms/maths/LucasSeries.java b/src/main/java/com/thealgorithms/maths/LucasSeries.java index ebeb2715fe2d..e277c511f317 100644 --- a/src/main/java/com/thealgorithms/maths/LucasSeries.java +++ b/src/main/java/com/thealgorithms/maths/LucasSeries.java @@ -3,7 +3,9 @@ /** * https://en.wikipedia.org/wiki/Lucas_number */ -public class LucasSeries { +public final class LucasSeries { + private LucasSeries() { + } /** * Calculate nth number of Lucas Series(2, 1, 3, 4, 7, 11, 18, 29, 47, 76, diff --git a/src/main/java/com/thealgorithms/maths/MagicSquare.java b/src/main/java/com/thealgorithms/maths/MagicSquare.java index 3bcede960346..de0afc148982 100644 --- a/src/main/java/com/thealgorithms/maths/MagicSquare.java +++ b/src/main/java/com/thealgorithms/maths/MagicSquare.java @@ -1,11 +1,13 @@ package com.thealgorithms.maths; -import java.util.*; +import java.util.Scanner; /*A magic square of order n is an arrangement of distinct n^2 integers,in a square, such that the n numbers in all rows, all columns, and both diagonals sum to the same constant. A magic square contains the integers from 1 to n^2.*/ -public class MagicSquare { +public final class MagicSquare { + private MagicSquare() { + } public static void main(String[] args) { Scanner sc = new Scanner(System.in); @@ -16,32 +18,32 @@ public static void main(String[] args) { System.exit(0); } - int[][] magic_square = new int[num][num]; + int[][] magicSquare = new int[num][num]; - int row_num = num / 2; - int col_num = num - 1; - magic_square[row_num][col_num] = 1; + int rowNum = num / 2; + int colNum = num - 1; + magicSquare[rowNum][colNum] = 1; for (int i = 2; i <= num * num; i++) { - if (magic_square[(row_num - 1 + num) % num][(col_num + 1) % num] == 0) { - row_num = (row_num - 1 + num) % num; - col_num = (col_num + 1) % num; + if (magicSquare[(rowNum - 1 + num) % num][(colNum + 1) % num] == 0) { + rowNum = (rowNum - 1 + num) % num; + colNum = (colNum + 1) % num; } else { - col_num = (col_num - 1 + num) % num; + colNum = (colNum - 1 + num) % num; } - magic_square[row_num][col_num] = i; + magicSquare[rowNum][colNum] = i; } // print the square for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) { - if (magic_square[i][j] < 10) { + if (magicSquare[i][j] < 10) { System.out.print(" "); } - if (magic_square[i][j] < 100) { + if (magicSquare[i][j] < 100) { System.out.print(" "); } - System.out.print(magic_square[i][j] + " "); + System.out.print(magicSquare[i][j] + " "); } System.out.println(); } diff --git a/src/main/java/com/thealgorithms/maths/MatrixUtil.java b/src/main/java/com/thealgorithms/maths/MatrixUtil.java index f3d0efeacc45..0759853d61a9 100644 --- a/src/main/java/com/thealgorithms/maths/MatrixUtil.java +++ b/src/main/java/com/thealgorithms/maths/MatrixUtil.java @@ -11,7 +11,9 @@ * @author: caos321 * @date: 31 October 2021 (Sunday) */ -public class MatrixUtil { +public final class MatrixUtil { + private MatrixUtil() { + } public static boolean isValid(final BigDecimal[][] matrix) { return matrix != null && matrix.length > 0 && matrix[0].length > 0; diff --git a/src/main/java/com/thealgorithms/maths/Median.java b/src/main/java/com/thealgorithms/maths/Median.java index 89bc42254d34..e4daec8fc11a 100644 --- a/src/main/java/com/thealgorithms/maths/Median.java +++ b/src/main/java/com/thealgorithms/maths/Median.java @@ -5,7 +5,9 @@ /** * Wikipedia: https://en.wikipedia.org/wiki/Median */ -public class Median { +public final class Median { + private Median() { + } /** * Calculate average median diff --git a/src/main/java/com/thealgorithms/maths/MillerRabinPrimalityCheck.java b/src/main/java/com/thealgorithms/maths/MillerRabinPrimalityCheck.java index ed4f325b0710..e25836f713a9 100644 --- a/src/main/java/com/thealgorithms/maths/MillerRabinPrimalityCheck.java +++ b/src/main/java/com/thealgorithms/maths/MillerRabinPrimalityCheck.java @@ -2,7 +2,9 @@ import java.util.Random; -public class MillerRabinPrimalityCheck { +public final class MillerRabinPrimalityCheck { + private MillerRabinPrimalityCheck() { + } /** * Check whether the given number is prime or not diff --git a/src/main/java/com/thealgorithms/maths/MobiusFunction.java b/src/main/java/com/thealgorithms/maths/MobiusFunction.java index e9ead992d7a7..915d0d9a6dae 100644 --- a/src/main/java/com/thealgorithms/maths/MobiusFunction.java +++ b/src/main/java/com/thealgorithms/maths/MobiusFunction.java @@ -12,7 +12,9 @@ * Author: Akshay Dubey (https://github.com/itsAkshayDubey) * * */ -public class MobiusFunction { +public final class MobiusFunction { + private MobiusFunction() { + } /** * This method returns μ(n) of given number n diff --git a/src/main/java/com/thealgorithms/maths/Mode.java b/src/main/java/com/thealgorithms/maths/Mode.java index 7333380b0a69..a92f404c653a 100644 --- a/src/main/java/com/thealgorithms/maths/Mode.java +++ b/src/main/java/com/thealgorithms/maths/Mode.java @@ -1,7 +1,6 @@ package com.thealgorithms.maths; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -11,15 +10,8 @@ * The mode of an array of numbers is the most frequently occurring number in the array, * or the most frequently occurring numbers if there are multiple numbers with the same frequency */ -public class Mode { - - public static void main(String[] args) { - /* Test array of integers */ - assert (mode(new int[] {})) == null; - assert Arrays.equals(mode(new int[] {5}), new int[] {5}); - assert Arrays.equals(mode(new int[] {1, 2, 3, 4, 5}), new int[] {1, 2, 3, 4, 5}); - assert Arrays.equals(mode(new int[] {7, 9, 9, 4, 5, 6, 7, 7, 8}), new int[] {7}); - assert Arrays.equals(mode(new int[] {7, 9, 9, 4, 5, 6, 7, 7, 9}), new int[] {7, 9}); +public final class Mode { + private Mode() { } /* @@ -28,7 +20,7 @@ public static void main(String[] args) { * @param numbers array of integers * @return mode of the array */ - public static int[] mode(int[] numbers) { + public static int[] mode(final int[] numbers) { if (numbers.length == 0) { return null; } diff --git a/src/main/java/com/thealgorithms/maths/NonRepeatingElement.java b/src/main/java/com/thealgorithms/maths/NonRepeatingElement.java index 01fdd5a6a5a5..5f1190d67de0 100644 --- a/src/main/java/com/thealgorithms/maths/NonRepeatingElement.java +++ b/src/main/java/com/thealgorithms/maths/NonRepeatingElement.java @@ -7,11 +7,14 @@ * Reason to use bitwise operator: It makes our program faster as we are operating on bits and not * on actual numbers. */ -public class NonRepeatingElement { +public final class NonRepeatingElement { + private NonRepeatingElement() { + } public static void main(String[] args) { try (Scanner sc = new Scanner(System.in)) { - int i, res = 0; + int i; + int res = 0; System.out.println("Enter the number of elements in the array"); int n = sc.nextInt(); if ((n & 1) == 1) { @@ -27,12 +30,6 @@ public static void main(String[] args) { arr[i] = sc.nextInt(); } - try { - sc.close(); - } catch (Exception e) { - System.out.println("Unable to close scanner" + e); - } - // Find XOR of the 2 non repeating elements for (i = 0; i < n; i++) { res ^= arr[i]; @@ -40,7 +37,8 @@ public static void main(String[] args) { // Finding the rightmost set bit res = res & (-res); - int num1 = 0, num2 = 0; + int num1 = 0; + int num2 = 0; for (i = 0; i < n; i++) { if ((res & arr[i]) > 0) { // Case 1 explained below @@ -51,7 +49,6 @@ public static void main(String[] args) { } System.out.println("The two non repeating elements are " + num1 + " and " + num2); - sc.close(); } } /* diff --git a/src/main/java/com/thealgorithms/maths/NumberOfDigits.java b/src/main/java/com/thealgorithms/maths/NumberOfDigits.java index 665d8ef5a98c..fc538196c7da 100644 --- a/src/main/java/com/thealgorithms/maths/NumberOfDigits.java +++ b/src/main/java/com/thealgorithms/maths/NumberOfDigits.java @@ -3,35 +3,16 @@ /** * Find the number of digits in a number. */ -public class NumberOfDigits { - - public static void main(String[] args) { - int[] numbers = { - 0, - 12, - 123, - 1234, - -12345, - 123456, - 1234567, - 12345678, - 123456789, - }; - for (int i = 0; i < numbers.length; ++i) { - assert numberOfDigits(numbers[i]) == i + 1; - assert numberOfDigitsFast(numbers[i]) == i + 1; - assert numberOfDigitsFaster(numbers[i]) == i + 1; - assert numberOfDigitsRecursion(numbers[i]) == i + 1; - } +public final class NumberOfDigits { + private NumberOfDigits() { } - /** * Find the number of digits in a number. * * @param number number to find * @return number of digits of given number */ - private static int numberOfDigits(int number) { + public static int numberOfDigits(int number) { int digits = 0; do { digits++; @@ -46,7 +27,7 @@ private static int numberOfDigits(int number) { * @param number number to find * @return number of digits of given number */ - private static int numberOfDigitsFast(int number) { + public static int numberOfDigitsFast(int number) { return number == 0 ? 1 : (int) Math.floor(Math.log10(Math.abs(number)) + 1); } @@ -56,7 +37,7 @@ private static int numberOfDigitsFast(int number) { * @param number number to find * @return number of digits of given number */ - private static int numberOfDigitsFaster(int number) { + public static int numberOfDigitsFaster(int number) { return number < 0 ? (-number + "").length() : (number + "").length(); } @@ -66,7 +47,7 @@ private static int numberOfDigitsFaster(int number) { * @param number number to find * @return number of digits of given number */ - private static int numberOfDigitsRecursion(int number) { + public static int numberOfDigitsRecursion(int number) { return number / 10 == 0 ? 1 : 1 + numberOfDigitsRecursion(number / 10); } } diff --git a/src/main/java/com/thealgorithms/maths/PalindromeNumber.java b/src/main/java/com/thealgorithms/maths/PalindromeNumber.java index 5dad99ef30e0..a22d63897b37 100644 --- a/src/main/java/com/thealgorithms/maths/PalindromeNumber.java +++ b/src/main/java/com/thealgorithms/maths/PalindromeNumber.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class PalindromeNumber { +public final class PalindromeNumber { + private PalindromeNumber() { + } /** * Check if {@code n} is palindrome number or not * diff --git a/src/main/java/com/thealgorithms/maths/PascalTriangle.java b/src/main/java/com/thealgorithms/maths/PascalTriangle.java index beb9a1e4937e..ef6aa41d6e53 100644 --- a/src/main/java/com/thealgorithms/maths/PascalTriangle.java +++ b/src/main/java/com/thealgorithms/maths/PascalTriangle.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class PascalTriangle { +public final class PascalTriangle { + private PascalTriangle() { + } /** *In mathematics, Pascal's triangle is a triangular array of the binomial coefficients that diff --git a/src/main/java/com/thealgorithms/maths/PerfectCube.java b/src/main/java/com/thealgorithms/maths/PerfectCube.java index f9ed0558b8d5..4104c6238580 100644 --- a/src/main/java/com/thealgorithms/maths/PerfectCube.java +++ b/src/main/java/com/thealgorithms/maths/PerfectCube.java @@ -3,7 +3,9 @@ /** * https://en.wikipedia.org/wiki/Cube_(algebra) */ -public class PerfectCube { +public final class PerfectCube { + private PerfectCube() { + } /** * Check if a number is perfect cube or not diff --git a/src/main/java/com/thealgorithms/maths/PerfectNumber.java b/src/main/java/com/thealgorithms/maths/PerfectNumber.java index 7d6a045166e5..49afd23f91bf 100644 --- a/src/main/java/com/thealgorithms/maths/PerfectNumber.java +++ b/src/main/java/com/thealgorithms/maths/PerfectNumber.java @@ -8,7 +8,9 @@ * * link:https://en.wikipedia.org/wiki/Perfect_number */ -public class PerfectNumber { +public final class PerfectNumber { + private PerfectNumber() { + } /** * Check if {@code number} is perfect number or not diff --git a/src/main/java/com/thealgorithms/maths/Perimeter.java b/src/main/java/com/thealgorithms/maths/Perimeter.java index e3476afaf0b3..f8aa1876d388 100644 --- a/src/main/java/com/thealgorithms/maths/Perimeter.java +++ b/src/main/java/com/thealgorithms/maths/Perimeter.java @@ -1,7 +1,9 @@ package com.thealgorithms.maths; // Perimeter of different 2D geometrical shapes -public class Perimeter { +public final class Perimeter { + private Perimeter() { + } /** * Calculate the Perimeter of regular polygon (equals sides) diff --git a/src/main/java/com/thealgorithms/maths/PiNilakantha.java b/src/main/java/com/thealgorithms/maths/PiNilakantha.java index d00240317997..6d43f134c94c 100644 --- a/src/main/java/com/thealgorithms/maths/PiNilakantha.java +++ b/src/main/java/com/thealgorithms/maths/PiNilakantha.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class PiNilakantha { +public final class PiNilakantha { + private PiNilakantha() { + } // Calculates Pi using Nilakantha's infinite series // Method 2 in the following link explains the algorithm diff --git a/src/main/java/com/thealgorithms/maths/PollardRho.java b/src/main/java/com/thealgorithms/maths/PollardRho.java index 8ce62336061e..7fa913b21b7e 100644 --- a/src/main/java/com/thealgorithms/maths/PollardRho.java +++ b/src/main/java/com/thealgorithms/maths/PollardRho.java @@ -35,7 +35,9 @@ * Author: Akshay Dubey (https://github.com/itsAkshayDubey) * * */ -public class PollardRho { +public final class PollardRho { + private PollardRho() { + } /** * This method returns a polynomial in x computed modulo n @@ -57,7 +59,9 @@ static int g(int base, int modulus) { * @throws RuntimeException object if GCD of given number cannot be found */ static int pollardRho(int number) { - int x = 2, y = 2, d = 1; + int x = 2; + int y = 2; + int d = 1; while (d == 1) { // tortoise move x = g(x, number); diff --git a/src/main/java/com/thealgorithms/maths/Pow.java b/src/main/java/com/thealgorithms/maths/Pow.java index 1d8ff2931ee0..3f362fe88d30 100644 --- a/src/main/java/com/thealgorithms/maths/Pow.java +++ b/src/main/java/com/thealgorithms/maths/Pow.java @@ -1,7 +1,9 @@ package com.thealgorithms.maths; // POWER (exponentials) Examples (a^b) -public class Pow { +public final class Pow { + private Pow() { + } public static void main(String[] args) { assert pow(2, 0) == Math.pow(2, 0); // == 1 diff --git a/src/main/java/com/thealgorithms/maths/PowerUsingRecursion.java b/src/main/java/com/thealgorithms/maths/PowerUsingRecursion.java index cbb2d6132366..93c8252ab929 100644 --- a/src/main/java/com/thealgorithms/maths/PowerUsingRecursion.java +++ b/src/main/java/com/thealgorithms/maths/PowerUsingRecursion.java @@ -5,7 +5,9 @@ * @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -public class PowerUsingRecursion { +public final class PowerUsingRecursion { + private PowerUsingRecursion() { + } public static double power(double base, int exponent) { // Base case: anything raised to the power of 0 is 1 diff --git a/src/main/java/com/thealgorithms/maths/PrimeCheck.java b/src/main/java/com/thealgorithms/maths/PrimeCheck.java index 2c9714f1335b..628a819aeba4 100644 --- a/src/main/java/com/thealgorithms/maths/PrimeCheck.java +++ b/src/main/java/com/thealgorithms/maths/PrimeCheck.java @@ -2,7 +2,9 @@ import java.util.Scanner; -public class PrimeCheck { +public final class PrimeCheck { + private PrimeCheck() { + } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); @@ -54,7 +56,8 @@ public static boolean isPrime(int n) { */ public static boolean fermatPrimeChecking(int n, int iteration) { long a; - int up = n - 2, down = 2; + int up = n - 2; + int down = 2; for (int i = 0; i < iteration; i++) { a = (long) Math.floor(Math.random() * (up - down + 1) + down); if (modPow(a, n - 1, n) != 1) { diff --git a/src/main/java/com/thealgorithms/maths/PrimeFactorization.java b/src/main/java/com/thealgorithms/maths/PrimeFactorization.java index 7e13cc673cd4..9ac50fd9043b 100644 --- a/src/main/java/com/thealgorithms/maths/PrimeFactorization.java +++ b/src/main/java/com/thealgorithms/maths/PrimeFactorization.java @@ -9,7 +9,9 @@ import java.util.ArrayList; import java.util.List; -public class PrimeFactorization { +public final class PrimeFactorization { + private PrimeFactorization() { + } public static List pfactors(int n) { List primeFactors = new ArrayList<>(); diff --git a/src/main/java/com/thealgorithms/maths/PronicNumber.java b/src/main/java/com/thealgorithms/maths/PronicNumber.java index 312af21ea2ba..4891cf3c63b3 100644 --- a/src/main/java/com/thealgorithms/maths/PronicNumber.java +++ b/src/main/java/com/thealgorithms/maths/PronicNumber.java @@ -10,19 +10,21 @@ * * */ -public class PronicNumber { +public final class PronicNumber { + private PronicNumber() { + } /** * This method checks if the given number is pronic number or non-pronic number * - * @param input_number Integer value which is to be checked if is a pronic number or not + * @param inputNumber Integer value which is to be checked if is a pronic number or not * @return true if input number is a pronic number, false otherwise */ - static boolean isPronic(int input_number) { + static boolean isPronic(int inputNumber) { // Iterating from 0 to input_number - for (int i = 0; i <= input_number; i++) { + for (int i = 0; i <= inputNumber; i++) { // Checking if product of i and (i+1) is equals input_number - if (i * (i + 1) == input_number && i != input_number) { + if (i * (i + 1) == inputNumber && i != inputNumber) { // return true if product of i and (i+1) is equals input_number return true; } diff --git a/src/main/java/com/thealgorithms/maths/PythagoreanTriple.java b/src/main/java/com/thealgorithms/maths/PythagoreanTriple.java index 68932c0b76bd..f535e9e6929b 100644 --- a/src/main/java/com/thealgorithms/maths/PythagoreanTriple.java +++ b/src/main/java/com/thealgorithms/maths/PythagoreanTriple.java @@ -3,7 +3,9 @@ /** * https://en.wikipedia.org/wiki/Pythagorean_triple */ -public class PythagoreanTriple { +public final class PythagoreanTriple { + private PythagoreanTriple() { + } public static void main(String[] args) { assert isPythagTriple(3, 4, 5); diff --git a/src/main/java/com/thealgorithms/maths/RomanNumeralUtil.java b/src/main/java/com/thealgorithms/maths/RomanNumeralUtil.java index 0caa286231b6..8f5d44dbe146 100644 --- a/src/main/java/com/thealgorithms/maths/RomanNumeralUtil.java +++ b/src/main/java/com/thealgorithms/maths/RomanNumeralUtil.java @@ -8,7 +8,9 @@ * @author Sokratis Fotkatzikis * @version 1.0 */ -public class RomanNumeralUtil { +public final class RomanNumeralUtil { + private RomanNumeralUtil() { + } private static final int MIN_VALUE = 1; private static final int MAX_VALUE = 5999; diff --git a/src/main/java/com/thealgorithms/maths/SimpsonIntegration.java b/src/main/java/com/thealgorithms/maths/SimpsonIntegration.java index ef02c5759c03..79bc112902c4 100644 --- a/src/main/java/com/thealgorithms/maths/SimpsonIntegration.java +++ b/src/main/java/com/thealgorithms/maths/SimpsonIntegration.java @@ -19,19 +19,19 @@ public static void main(String[] args) { SimpsonIntegration integration = new SimpsonIntegration(); // Give random data for the example purposes - int N = 16; + int n = 16; double a = 1; double b = 3; - // Check so that N is even - if (N % 2 != 0) { - System.out.println("N must be even number for Simpsons method. Aborted"); + // Check so that n is even + if (n % 2 != 0) { + System.out.println("n must be even number for Simpsons method. Aborted"); System.exit(1); } // Calculate step h and evaluate the integral - double h = (b - a) / (double) N; - double integralEvaluation = integration.simpsonsMethod(N, h, a); + double h = (b - a) / (double) n; + double integralEvaluation = integration.simpsonsMethod(n, h, a); System.out.println("The integral is equal to: " + integralEvaluation); } @@ -45,13 +45,13 @@ public static void main(String[] args) { * * @return result of the integral evaluation */ - public double simpsonsMethod(int N, double h, double a) { + public double simpsonsMethod(int n, double h, double a) { TreeMap data = new TreeMap<>(); // Key: i, Value: f(xi) double temp; double xi = a; // Initialize the variable xi = x0 + 0*h // Create the table of xi and yi points - for (int i = 0; i <= N; i++) { + for (int i = 0; i <= n; i++) { temp = f(xi); // Get the value of the function at that point data.put(i, temp); xi += h; // Increase the xi to the next point diff --git a/src/main/java/com/thealgorithms/maths/SquareFreeInteger.java b/src/main/java/com/thealgorithms/maths/SquareFreeInteger.java index c988bb70808c..22e9fee00605 100644 --- a/src/main/java/com/thealgorithms/maths/SquareFreeInteger.java +++ b/src/main/java/com/thealgorithms/maths/SquareFreeInteger.java @@ -14,7 +14,9 @@ import java.util.HashSet; import java.util.List; -public class SquareFreeInteger { +public final class SquareFreeInteger { + private SquareFreeInteger() { + } /** * This method returns whether an integer is square free * diff --git a/src/main/java/com/thealgorithms/maths/SquareRootWithBabylonianMethod.java b/src/main/java/com/thealgorithms/maths/SquareRootWithBabylonianMethod.java index 2f8fa9a83885..2b071307e2bc 100644 --- a/src/main/java/com/thealgorithms/maths/SquareRootWithBabylonianMethod.java +++ b/src/main/java/com/thealgorithms/maths/SquareRootWithBabylonianMethod.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class SquareRootWithBabylonianMethod { +public final class SquareRootWithBabylonianMethod { + private SquareRootWithBabylonianMethod() { + } /** * get the value, return the square root @@ -8,7 +10,7 @@ public class SquareRootWithBabylonianMethod { * @param num contains elements * @return the square root of num */ - public static float square_Root(float num) { + public static float squareRoot(float num) { float a = num; float b = 1; double e = 0.000001; diff --git a/src/main/java/com/thealgorithms/maths/SquareRootWithNewtonRaphsonMethod.java b/src/main/java/com/thealgorithms/maths/SquareRootWithNewtonRaphsonMethod.java index eb116d21ac36..80d185c93785 100644 --- a/src/main/java/com/thealgorithms/maths/SquareRootWithNewtonRaphsonMethod.java +++ b/src/main/java/com/thealgorithms/maths/SquareRootWithNewtonRaphsonMethod.java @@ -14,7 +14,9 @@ * be changed according to the user preference. */ -public class SquareRootWithNewtonRaphsonMethod { +public final class SquareRootWithNewtonRaphsonMethod { + private SquareRootWithNewtonRaphsonMethod() { + } public static double squareRoot(int n) { double x = n; // initially taking a guess that x = n. diff --git a/src/main/java/com/thealgorithms/maths/StandardDeviation.java b/src/main/java/com/thealgorithms/maths/StandardDeviation.java index 84d21f3082f0..a8e88d930a9c 100644 --- a/src/main/java/com/thealgorithms/maths/StandardDeviation.java +++ b/src/main/java/com/thealgorithms/maths/StandardDeviation.java @@ -1,18 +1,20 @@ package com.thealgorithms.maths; -public class StandardDeviation { +public final class StandardDeviation { + private StandardDeviation() { + } public static double stdDev(double[] data) { - double var = 0; + double variance = 0; double avg = 0; for (int i = 0; i < data.length; i++) { avg += data[i]; } avg /= data.length; for (int j = 0; j < data.length; j++) { - var += Math.pow((data[j] - avg), 2); + variance += Math.pow((data[j] - avg), 2); } - var /= data.length; - return Math.sqrt(var); + variance /= data.length; + return Math.sqrt(variance); } } diff --git a/src/main/java/com/thealgorithms/maths/StandardScore.java b/src/main/java/com/thealgorithms/maths/StandardScore.java index dcedf458b09e..22a9f550e114 100644 --- a/src/main/java/com/thealgorithms/maths/StandardScore.java +++ b/src/main/java/com/thealgorithms/maths/StandardScore.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -public class StandardScore { +public final class StandardScore { + private StandardScore() { + } public static double zScore(double num, double mean, double stdDev) { return (num - mean) / stdDev; diff --git a/src/main/java/com/thealgorithms/maths/TrinomialTriangle.java b/src/main/java/com/thealgorithms/maths/TrinomialTriangle.java index 0e2fe9e7a46a..877ef4227afc 100644 --- a/src/main/java/com/thealgorithms/maths/TrinomialTriangle.java +++ b/src/main/java/com/thealgorithms/maths/TrinomialTriangle.java @@ -7,9 +7,11 @@ * * Example Input: n = 4 Output 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 1 */ -public class TrinomialTriangle { +public final class TrinomialTriangle { + private TrinomialTriangle() { + } - public static int TrinomialValue(int n, int k) { + public static int trinomialValue(int n, int k) { if (n == 0 && k == 0) { return 1; } @@ -18,17 +20,17 @@ public static int TrinomialValue(int n, int k) { return 0; } - return (TrinomialValue(n - 1, k - 1) + TrinomialValue(n - 1, k) + TrinomialValue(n - 1, k + 1)); + return (trinomialValue(n - 1, k - 1) + trinomialValue(n - 1, k) + trinomialValue(n - 1, k + 1)); } public static void printTrinomial(int n) { for (int i = 0; i < n; i++) { for (int j = -i; j <= 0; j++) { - System.out.print(TrinomialValue(i, j) + " "); + System.out.print(trinomialValue(i, j) + " "); } for (int j = 1; j <= i; j++) { - System.out.print(TrinomialValue(i, j) + " "); + System.out.print(trinomialValue(i, j) + " "); } System.out.println(); diff --git a/src/main/java/com/thealgorithms/maths/TwinPrime.java b/src/main/java/com/thealgorithms/maths/TwinPrime.java index 867a1d23f220..81731376b37a 100644 --- a/src/main/java/com/thealgorithms/maths/TwinPrime.java +++ b/src/main/java/com/thealgorithms/maths/TwinPrime.java @@ -9,7 +9,9 @@ * * */ -public class TwinPrime { +public final class TwinPrime { + private TwinPrime() { + } /** * This method returns twin prime of the integer value passed as argument diff --git a/src/main/java/com/thealgorithms/maths/VampireNumber.java b/src/main/java/com/thealgorithms/maths/VampireNumber.java index d9aa4f203550..d64c82c6e68e 100644 --- a/src/main/java/com/thealgorithms/maths/VampireNumber.java +++ b/src/main/java/com/thealgorithms/maths/VampireNumber.java @@ -16,7 +16,9 @@ * *

*/ -public class VampireNumber { +public final class VampireNumber { + private VampireNumber() { + } public static void main(String[] args) { test(10, 1000); diff --git a/src/main/java/com/thealgorithms/maths/VectorCrossProduct.java b/src/main/java/com/thealgorithms/maths/VectorCrossProduct.java index 8a1bb1488eab..e2769744bcda 100644 --- a/src/main/java/com/thealgorithms/maths/VectorCrossProduct.java +++ b/src/main/java/com/thealgorithms/maths/VectorCrossProduct.java @@ -55,14 +55,14 @@ public class VectorCrossProduct { /** * constructor, initialises Vector with given Direction Ratios * - * @param _x set to x - * @param _y set to y - * @param _z set to z + * @param vectorX set to x + * @param vectorY set to y + * @param vectorZ set to z */ - VectorCrossProduct(int _x, int _y, int _z) { - x = _x; - y = _y; - z = _z; + VectorCrossProduct(int vectorX, int vectorY, int vectorZ) { + x = vectorX; + y = vectorY; + z = vectorZ; } /** @@ -111,15 +111,15 @@ public static void main(String[] args) { static void test() { // Create two vectors - VectorCrossProduct A = new VectorCrossProduct(1, -2, 3); - VectorCrossProduct B = new VectorCrossProduct(2, 0, 3); + VectorCrossProduct a = new VectorCrossProduct(1, -2, 3); + VectorCrossProduct b = new VectorCrossProduct(2, 0, 3); // Determine cross product - VectorCrossProduct crossProd = A.crossProduct(B); + VectorCrossProduct crossProd = a.crossProduct(b); crossProd.displayVector(); // Determine dot product - int dotProd = A.dotProduct(B); - System.out.println("Dot Product of A and B: " + dotProd); + int dotProd = a.dotProduct(b); + System.out.println("Dot Product of a and b: " + dotProd); } } diff --git a/src/main/java/com/thealgorithms/maths/Volume.java b/src/main/java/com/thealgorithms/maths/Volume.java index edc3575dfda6..4b73f849bb81 100644 --- a/src/main/java/com/thealgorithms/maths/Volume.java +++ b/src/main/java/com/thealgorithms/maths/Volume.java @@ -1,7 +1,9 @@ package com.thealgorithms.maths; /* Calculate the volume of various shapes.*/ -public class Volume { +public final class Volume { + private Volume() { + } /** * Calculate the volume of a cube. diff --git a/src/main/java/com/thealgorithms/matrixexponentiation/Fibonacci.java b/src/main/java/com/thealgorithms/matrixexponentiation/Fibonacci.java index aa255832f47f..afd34933047a 100644 --- a/src/main/java/com/thealgorithms/matrixexponentiation/Fibonacci.java +++ b/src/main/java/com/thealgorithms/matrixexponentiation/Fibonacci.java @@ -7,13 +7,15 @@ * see https://www.geeksforgeeks.org/matrix-exponentiation/ * */ -public class Fibonacci { +public final class Fibonacci { + private Fibonacci() { + } // Exponentiation matrix for Fibonacci sequence - private static final int[][] fibMatrix = {{1, 1}, {1, 0}}; - private static final int[][] identityMatrix = {{1, 0}, {0, 1}}; + private static final int[][] FIB_MATRIX = {{1, 1}, {1, 0}}; + private static final int[][] IDENTITY_MATRIX = {{1, 0}, {0, 1}}; // First 2 fibonacci numbers - private static final int[][] baseFibNumbers = {{1}, {0}}; + private static final int[][] BASE_FIB_NUMBERS = {{1}, {0}}; /** * Performs multiplication of 2 matrices @@ -53,14 +55,14 @@ private static int[][] matrixMultiplication(int[][] matrix1, int[][] matrix2) { */ public static int[][] fib(int n) { if (n == 0) { - return Fibonacci.identityMatrix; + return Fibonacci.IDENTITY_MATRIX; } else { int[][] cachedResult = fib(n / 2); int[][] matrixExpResult = matrixMultiplication(cachedResult, cachedResult); if (n % 2 == 0) { return matrixExpResult; } else { - return matrixMultiplication(Fibonacci.fibMatrix, matrixExpResult); + return matrixMultiplication(Fibonacci.FIB_MATRIX, matrixExpResult); } } } @@ -69,7 +71,7 @@ public static void main(String[] args) { // Returns [0, 1, 1, 2, 3, 5 ..] for n = [0, 1, 2, 3, 4, 5.. ] Scanner sc = new Scanner(System.in); int n = sc.nextInt(); - int[][] result = matrixMultiplication(fib(n), baseFibNumbers); + int[][] result = matrixMultiplication(fib(n), BASE_FIB_NUMBERS); System.out.println("Fib(" + n + ") = " + result[1][0]); sc.close(); } diff --git a/src/main/java/com/thealgorithms/misc/InverseOfMatrix.java b/src/main/java/com/thealgorithms/misc/InverseOfMatrix.java index 0fb5b6f17b97..5543463e9749 100644 --- a/src/main/java/com/thealgorithms/misc/InverseOfMatrix.java +++ b/src/main/java/com/thealgorithms/misc/InverseOfMatrix.java @@ -11,7 +11,9 @@ * * We can also find the inverse of a matrix */ -public class InverseOfMatrix { +public final class InverseOfMatrix { + private InverseOfMatrix() { + } public static void main(String[] argv) { Scanner input = new Scanner(System.in); diff --git a/src/main/java/com/thealgorithms/misc/MapReduce.java b/src/main/java/com/thealgorithms/misc/MapReduce.java index baf960f8ecef..c076957344f9 100644 --- a/src/main/java/com/thealgorithms/misc/MapReduce.java +++ b/src/main/java/com/thealgorithms/misc/MapReduce.java @@ -15,7 +15,9 @@ * Wikipedia link : https://en.wikipedia.org/wiki/MapReduce */ -public class MapReduce { +public final class MapReduce { + private MapReduce() { + } /* *Counting all the words frequency within a sentence. */ diff --git a/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java b/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java index 4d8b980f2409..d4ddffe8ddd7 100644 --- a/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java +++ b/src/main/java/com/thealgorithms/misc/MedianOfMatrix.java @@ -10,6 +10,8 @@ */ public final class MedianOfMatrix { + private MedianOfMatrix() { + } public static int median(List> matrix) { // Flatten the matrix into a 1D list diff --git a/src/main/java/com/thealgorithms/misc/PalindromePrime.java b/src/main/java/com/thealgorithms/misc/PalindromePrime.java index 58de938394af..6b01cdced23c 100644 --- a/src/main/java/com/thealgorithms/misc/PalindromePrime.java +++ b/src/main/java/com/thealgorithms/misc/PalindromePrime.java @@ -2,7 +2,9 @@ import java.util.Scanner; -public class PalindromePrime { +public final class PalindromePrime { + private PalindromePrime() { + } public static void main(String[] args) { // Main funtion Scanner in = new Scanner(System.in); diff --git a/src/main/java/com/thealgorithms/misc/RangeInSortedArray.java b/src/main/java/com/thealgorithms/misc/RangeInSortedArray.java index af2ca4dd5324..0dfc8ac32a6f 100644 --- a/src/main/java/com/thealgorithms/misc/RangeInSortedArray.java +++ b/src/main/java/com/thealgorithms/misc/RangeInSortedArray.java @@ -1,8 +1,10 @@ package com.thealgorithms.misc; -import java.util.*; +import java.util.Arrays; -public class RangeInSortedArray { +public final class RangeInSortedArray { + private RangeInSortedArray() { + } public static void main(String[] args) { // Testcases @@ -26,7 +28,7 @@ public static void alteredBinSearch(int[] nums, int key, int left, int right, in if (left > right) { return; } - int mid = (left + right) / 2; + int mid = (left + right) >>> 1; if (nums[mid] > key) { alteredBinSearch(nums, key, left, mid - 1, range, goLeft); } else if (nums[mid] < key) { @@ -52,7 +54,7 @@ public static void alteredBinSearch(int[] nums, int key, int left, int right, in // of 'key' public static void alteredBinSearchIter(int[] nums, int key, int left, int right, int[] range, boolean goLeft) { while (left <= right) { - int mid = (left + right) / 2; + final int mid = (left + right) >>> 1; if (nums[mid] > key) { right = mid - 1; } else if (nums[mid] < key) { @@ -84,7 +86,7 @@ public static int getCountLessThan(int[] nums, int key) { public static int getLessThan(int[] nums, int key, int left, int right) { int count = 0; while (left <= right) { - int mid = (left + right) / 2; + final int mid = (left + right) >>> 1; if (nums[mid] > key) { right = mid - 1; } else if (nums[mid] <= key) { diff --git a/src/main/java/com/thealgorithms/misc/Sort012D.java b/src/main/java/com/thealgorithms/misc/Sort012D.java index 2ffe31b9ddd8..febe13f4fec3 100644 --- a/src/main/java/com/thealgorithms/misc/Sort012D.java +++ b/src/main/java/com/thealgorithms/misc/Sort012D.java @@ -1,6 +1,6 @@ package com.thealgorithms.misc; -import java.util.*; +import java.util.Scanner; /** * The array is divided into four sections: a[1..Lo-1] zeroes a[Lo..Mid-1] ones @@ -11,7 +11,9 @@ * For more information on the Dutch national flag algorithm refer * https://en.wikipedia.org/wiki/Dutch_national_flag_problem */ -public class Sort012D { +public final class Sort012D { + private Sort012D() { + } public static void main(String[] args) { Scanner np = new Scanner(System.in); @@ -49,6 +51,9 @@ public static void sort012(int[] a) { h--; break; } + default: { + throw new IllegalArgumentException("Unexpected value: " + a[mid]); + } } } System.out.println("the Sorted array is "); diff --git a/src/main/java/com/thealgorithms/misc/Sparcity.java b/src/main/java/com/thealgorithms/misc/Sparsity.java similarity index 81% rename from src/main/java/com/thealgorithms/misc/Sparcity.java rename to src/main/java/com/thealgorithms/misc/Sparsity.java index 7eb5e5896308..cae2fbdead94 100644 --- a/src/main/java/com/thealgorithms/misc/Sparcity.java +++ b/src/main/java/com/thealgorithms/misc/Sparsity.java @@ -1,6 +1,6 @@ package com.thealgorithms.misc; -import java.util.*; +import java.util.Scanner; /* *A matrix is sparse if many of its coefficients are zero (In general if 2/3rd of matrix elements @@ -11,15 +11,17 @@ * @author Ojasva Jain */ -class Sparcity { +final class Sparsity { + private Sparsity() { + } /* - * @return Sparcity of matrix + * @return Sparsity of matrix * - * where sparcity = number of zeroes/total elements in matrix + * where sparsity = number of zeroes/total elements in matrix * */ - static double sparcity(double[][] mat) { + static double sparsity(double[][] mat) { int zero = 0; // Traversing the matrix to count number of zeroes for (int i = 0; i < mat.length; i++) { @@ -29,7 +31,7 @@ static double sparcity(double[][] mat) { } } } - // return sparcity + // return sparsity return ((double) zero / (mat.length * mat[1].length)); } @@ -48,7 +50,7 @@ public static void main(String[] args) { mat[i][j] = in.nextDouble(); } } - System.out.println("Sparcity of matrix is: " + sparcity(mat)); + System.out.println("Sparsity of matrix is: " + sparsity(mat)); in.close(); } } diff --git a/src/main/java/com/thealgorithms/misc/ThreeSumProblem.java b/src/main/java/com/thealgorithms/misc/ThreeSumProblem.java index a232ad986970..1c5f4a440532 100644 --- a/src/main/java/com/thealgorithms/misc/ThreeSumProblem.java +++ b/src/main/java/com/thealgorithms/misc/ThreeSumProblem.java @@ -1,6 +1,14 @@ package com.thealgorithms.misc; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Scanner; +import java.util.Set; public class ThreeSumProblem { @@ -16,13 +24,13 @@ public static void main(String[] args) { arr[i] = scan.nextInt(); } ThreeSumProblem th = new ThreeSumProblem(); - System.out.println("Brute Force Approach\n" + (th.BruteForce(arr, ts)) + "\n"); - System.out.println("Two Pointer Approach\n" + (th.TwoPointer(arr, ts)) + "\n"); - System.out.println("Hashmap Approach\n" + (th.Hashmap(arr, ts))); + System.out.println("Brute Force Approach\n" + (th.bruteForce(arr, ts)) + "\n"); + System.out.println("Two Pointer Approach\n" + (th.twoPointer(arr, ts)) + "\n"); + System.out.println("Hashmap Approach\n" + (th.hashMap(arr, ts))); scan.close(); } - public List> BruteForce(int[] nums, int target) { + public List> bruteForce(int[] nums, int target) { List> arr = new ArrayList>(); for (int i = 0; i < nums.length; i++) { @@ -43,7 +51,7 @@ public List> BruteForce(int[] nums, int target) { return arr; } - public List> TwoPointer(int[] nums, int target) { + public List> twoPointer(int[] nums, int target) { Arrays.sort(nums); List> arr = new ArrayList>(); int start = 0; @@ -73,7 +81,7 @@ public List> TwoPointer(int[] nums, int target) { return new ArrayList>(set); } - public List> Hashmap(int[] nums, int target) { + public List> hashMap(int[] nums, int target) { Arrays.sort(nums); Set> ts = new HashSet<>(); HashMap hm = new HashMap<>(); diff --git a/src/main/java/com/thealgorithms/misc/WordBoggle.java b/src/main/java/com/thealgorithms/misc/WordBoggle.java index 0dfbd89def99..3eb0dc95ffb5 100644 --- a/src/main/java/com/thealgorithms/misc/WordBoggle.java +++ b/src/main/java/com/thealgorithms/misc/WordBoggle.java @@ -1,8 +1,16 @@ package com.thealgorithms.misc; -import java.util.*; - -public class WordBoggle { +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public final class WordBoggle { + private WordBoggle() { + } /** * O(nm * 8^s + ws) time where n = width of boggle board, m = height of @@ -127,7 +135,7 @@ class Trie { TrieNode root; char endSymbol; - public Trie() { + Trie() { this.root = new TrieNode(); this.endSymbol = '*'; } diff --git a/src/main/java/com/thealgorithms/misc/matrixTranspose.java b/src/main/java/com/thealgorithms/misc/matrixTranspose.java index b5ad02184a00..40634f18b5f6 100644 --- a/src/main/java/com/thealgorithms/misc/matrixTranspose.java +++ b/src/main/java/com/thealgorithms/misc/matrixTranspose.java @@ -18,7 +18,9 @@ * @version 11.0.9 * @since 2014-03-31 */ -public class matrixTranspose { +public final class matrixTranspose { + private matrixTranspose() { + } public static void main(String[] args) { /* @@ -29,7 +31,10 @@ public static void main(String[] args) { * @return Nothing. */ Scanner sc = new Scanner(System.in); - int i, j, row, column; + int i; + int j; + int row; + int column; System.out.println("Enter the number of rows in the 2D matrix:"); /* diff --git a/src/main/java/com/thealgorithms/others/ArrayLeftRotation.java b/src/main/java/com/thealgorithms/others/ArrayLeftRotation.java index 4ee54bbdacf8..f43841f1f184 100644 --- a/src/main/java/com/thealgorithms/others/ArrayLeftRotation.java +++ b/src/main/java/com/thealgorithms/others/ArrayLeftRotation.java @@ -8,7 +8,9 @@ * @author sangin-lee */ -public class ArrayLeftRotation { +public final class ArrayLeftRotation { + private ArrayLeftRotation() { + } /* * Returns the result of left rotation of given array arr and integer n diff --git a/src/main/java/com/thealgorithms/others/BFPRT.java b/src/main/java/com/thealgorithms/others/BFPRT.java index 29f47cd68ed6..1a5b44180651 100644 --- a/src/main/java/com/thealgorithms/others/BFPRT.java +++ b/src/main/java/com/thealgorithms/others/BFPRT.java @@ -5,7 +5,9 @@ /** * BFPRT algorithm. */ -public class BFPRT { +public final class BFPRT { + private BFPRT() { + } public static int[] getMinKNumsByBFPRT(int[] arr, int k) { if (k < 1 || k > arr.length) { @@ -32,9 +34,7 @@ public static int getMinKthByBFPRT(int[] arr, int k) { public static int[] copyArray(int[] arr) { int[] copyArr = new int[arr.length]; - for (int i = 0; i < arr.length; i++) { - copyArr[i] = arr[i]; - } + System.arraycopy(arr, 0, copyArr, 0, arr.length); return copyArr; } diff --git a/src/main/java/com/thealgorithms/others/BankersAlgorithm.java b/src/main/java/com/thealgorithms/others/BankersAlgorithm.java index 3fbb4f9fda68..a22d7c737415 100644 --- a/src/main/java/com/thealgorithms/others/BankersAlgorithm.java +++ b/src/main/java/com/thealgorithms/others/BankersAlgorithm.java @@ -20,7 +20,9 @@ */ import java.util.Scanner; -public class BankersAlgorithm { +public final class BankersAlgorithm { + private BankersAlgorithm() { + } /** * This method finds the need of each process @@ -58,10 +60,7 @@ static boolean checkSafeSystem(int[] processes, int[] availableArray, int[][] ma int[] safeSequenceArray = new int[totalProcess]; int[] workArray = new int[totalResources]; - - for (int i = 0; i < totalResources; i++) { - workArray[i] = availableArray[i]; - } + System.arraycopy(availableArray, 0, workArray, 0, totalResources); int count = 0; @@ -111,7 +110,8 @@ static boolean checkSafeSystem(int[] processes, int[] availableArray, int[][] ma * This is main method of Banker's Algorithm */ public static void main(String[] args) { - int numberOfProcesses, numberOfResources; + int numberOfProcesses; + int numberOfResources; Scanner sc = new Scanner(System.in); diff --git a/src/main/java/com/thealgorithms/others/BrianKernighanAlgorithm.java b/src/main/java/com/thealgorithms/others/BrianKernighanAlgorithm.java index a1983feccb2e..b70fffe82c5b 100644 --- a/src/main/java/com/thealgorithms/others/BrianKernighanAlgorithm.java +++ b/src/main/java/com/thealgorithms/others/BrianKernighanAlgorithm.java @@ -20,7 +20,9 @@ *

* Time Complexity: O(logn) */ -public class BrianKernighanAlgorithm { +public final class BrianKernighanAlgorithm { + private BrianKernighanAlgorithm() { + } /** * @param num: number in which we count the set bits diff --git a/src/main/java/com/thealgorithms/others/CRC16.java b/src/main/java/com/thealgorithms/others/CRC16.java index c5c3b1f35a7d..85e5cd2c13ae 100644 --- a/src/main/java/com/thealgorithms/others/CRC16.java +++ b/src/main/java/com/thealgorithms/others/CRC16.java @@ -3,7 +3,9 @@ /** * Generates a crc16 checksum for a given string */ -public class CRC16 { +public final class CRC16 { + private CRC16() { + } public static void main(String[] args) { System.out.println(crc16("Hello World!")); diff --git a/src/main/java/com/thealgorithms/others/CRC32.java b/src/main/java/com/thealgorithms/others/CRC32.java index 561a33f4dae9..180936ed46c1 100644 --- a/src/main/java/com/thealgorithms/others/CRC32.java +++ b/src/main/java/com/thealgorithms/others/CRC32.java @@ -5,7 +5,9 @@ /** * Generates a crc32 checksum for a given string or byte array */ -public class CRC32 { +public final class CRC32 { + private CRC32() { + } public static void main(String[] args) { System.out.println(Integer.toHexString(crc32("Hello World"))); diff --git a/src/main/java/com/thealgorithms/others/Conway.java b/src/main/java/com/thealgorithms/others/Conway.java index b1d54e61094f..ab39890c9ece 100644 --- a/src/main/java/com/thealgorithms/others/Conway.java +++ b/src/main/java/com/thealgorithms/others/Conway.java @@ -1,8 +1,12 @@ package com.thealgorithms.others; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; -public class Conway { +public final class Conway { + private Conway() { + } /* * This class will generate the conway sequence also known as the look and say sequence. @@ -13,7 +17,7 @@ public class Conway { *1s, two 2s, one 1" or 312211. https://en.wikipedia.org/wiki/Look-and-say_sequence * */ - private static final StringBuilder builder = new StringBuilder(); + private static final StringBuilder BUILDER = new StringBuilder(); protected static List generateList(String originalString, int maxIteration) { List numbers = new ArrayList<>(); @@ -25,9 +29,9 @@ protected static List generateList(String originalString, int maxIterati } public static String generateNextElement(String originalString) { - builder.setLength(0); + BUILDER.setLength(0); String[] stp = originalString.split("(?<=(.))(?!\\1)"); - Arrays.stream(stp).forEach(s -> builder.append(s.length()).append(s.charAt(0))); - return builder.toString(); + Arrays.stream(stp).forEach(s -> BUILDER.append(s.length()).append(s.charAt(0))); + return BUILDER.toString(); } } diff --git a/src/main/java/com/thealgorithms/others/CountChar.java b/src/main/java/com/thealgorithms/others/CountChar.java index 5a78c0c17412..ad858137726b 100644 --- a/src/main/java/com/thealgorithms/others/CountChar.java +++ b/src/main/java/com/thealgorithms/others/CountChar.java @@ -1,6 +1,8 @@ package com.thealgorithms.others; -public class CountChar { +public final class CountChar { + private CountChar() { + } /** * Count non space character in string @@ -9,7 +11,7 @@ public class CountChar { * @return number of character in the specified string */ - public static int CountCharacters(String str) { + public static int countCharacters(String str) { return str.replaceAll("\\s", "").length(); } } diff --git a/src/main/java/com/thealgorithms/others/CountWords.java b/src/main/java/com/thealgorithms/others/CountWords.java index 1defde2cdd8b..26b9c50d928c 100644 --- a/src/main/java/com/thealgorithms/others/CountWords.java +++ b/src/main/java/com/thealgorithms/others/CountWords.java @@ -3,7 +3,7 @@ /** * @author Marcus */ -final public class CountWords { +public final class CountWords { private CountWords() { } diff --git a/src/main/java/com/thealgorithms/others/Damm.java b/src/main/java/com/thealgorithms/others/Damm.java index a32ae246a2ec..55a4c5b81a89 100644 --- a/src/main/java/com/thealgorithms/others/Damm.java +++ b/src/main/java/com/thealgorithms/others/Damm.java @@ -14,7 +14,9 @@ * @see Wiki. Damm * algorithm */ -public class Damm { +public final class Damm { + private Damm() { + } /** * Weakly totally anti-symmetric quasigroup of order 10. This table is not diff --git a/src/main/java/com/thealgorithms/others/Dijkstra.java b/src/main/java/com/thealgorithms/others/Dijkstra.java index 4886dc4ce7a4..e2a778f8d6c3 100644 --- a/src/main/java/com/thealgorithms/others/Dijkstra.java +++ b/src/main/java/com/thealgorithms/others/Dijkstra.java @@ -15,9 +15,14 @@ * https://rosettacode.org/wiki/Dijkstra%27s_algorithm#Java Also most of the * comments are from RosettaCode. */ -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.NavigableSet; +import java.util.TreeSet; -public class Dijkstra { +public final class Dijkstra { + private Dijkstra() { + } private static final Graph.Edge[] GRAPH = { // Distance from node "a" to node "b" is 7. @@ -58,10 +63,11 @@ class Graph { */ public static class Edge { - public final String v1, v2; + public final String v1; + public final String v2; public final int dist; - public Edge(String v1, String v2, int dist) { + Edge(String v1, String v2, int dist) { this.v1 = v1; this.v2 = v2; this.dist = dist; @@ -79,7 +85,7 @@ public static class Vertex implements Comparable { public Vertex previous = null; public final Map neighbours = new HashMap<>(); - public Vertex(String name) { + Vertex(String name) { this.name = name; } @@ -147,7 +153,7 @@ public String toString() { /** * Builds a graph from a set of edges */ - public Graph(Edge[] edges) { + Graph(Edge[] edges) { graph = new HashMap<>(edges.length); // one pass to find all vertices @@ -193,7 +199,8 @@ public void dijkstra(String startName) { * Implementation of dijkstra's algorithm using a binary heap. */ private void dijkstra(final NavigableSet q) { - Vertex u, v; + Vertex u; + Vertex v; while (!q.isEmpty()) { // vertex with shortest distance (first iteration will return source) u = q.pollFirst(); diff --git a/src/main/java/com/thealgorithms/others/EulersFunction.java b/src/main/java/com/thealgorithms/others/EulersFunction.java index 27c9aed8b620..f08e5e4fa395 100644 --- a/src/main/java/com/thealgorithms/others/EulersFunction.java +++ b/src/main/java/com/thealgorithms/others/EulersFunction.java @@ -3,7 +3,7 @@ /** * @brief utility class for Euler's totient function */ -final public class EulersFunction { +public final class EulersFunction { private EulersFunction() { } diff --git a/src/main/java/com/thealgorithms/others/FibbonaciSeries.java b/src/main/java/com/thealgorithms/others/FibbonaciSeries.java index 103e943743c7..a4815296e547 100644 --- a/src/main/java/com/thealgorithms/others/FibbonaciSeries.java +++ b/src/main/java/com/thealgorithms/others/FibbonaciSeries.java @@ -15,13 +15,16 @@ * Problem Statement: print all Fibonacci numbers that are smaller than your * given input N */ -public class FibbonaciSeries { +public final class FibbonaciSeries { + private FibbonaciSeries() { + } public static void main(String[] args) { // Get input from the user Scanner scan = new Scanner(System.in); int n = scan.nextInt(); - int first = 0, second = 1; + int first = 0; + int second = 1; scan.close(); while (first <= n) { // print first fibo 0 then add second fibo into it while updating second as well diff --git a/src/main/java/com/thealgorithms/others/FloydTriangle.java b/src/main/java/com/thealgorithms/others/FloydTriangle.java index d25ab303e3ed..fbeaec339248 100644 --- a/src/main/java/com/thealgorithms/others/FloydTriangle.java +++ b/src/main/java/com/thealgorithms/others/FloydTriangle.java @@ -2,12 +2,15 @@ import java.util.Scanner; -class FloydTriangle { +final class FloydTriangle { + private FloydTriangle() { + } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter the number of rows which you want in your Floyd Triangle: "); - int r = sc.nextInt(), n = 0; + int r = sc.nextInt(); + int n = 0; sc.close(); for (int i = 0; i < r; i++) { for (int j = 0; j <= i; j++) { diff --git a/src/main/java/com/thealgorithms/others/GuassLegendre.java b/src/main/java/com/thealgorithms/others/GuassLegendre.java index 8b15739a6d91..5ecfdf2b84cc 100644 --- a/src/main/java/com/thealgorithms/others/GuassLegendre.java +++ b/src/main/java/com/thealgorithms/others/GuassLegendre.java @@ -6,7 +6,9 @@ * * @author AKS1996 */ -public class GuassLegendre { +public final class GuassLegendre { + private GuassLegendre() { + } public static void main(String[] args) { for (int i = 1; i <= 3; ++i) { @@ -19,7 +21,10 @@ static double pi(int l) { * l: No of loops to run */ - double a = 1, b = Math.pow(2, -0.5), t = 0.25, p = 1; + double a = 1; + double b = Math.pow(2, -0.5); + double t = 0.25; + double p = 1; for (int i = 0; i < l; ++i) { double[] temp = update(a, b, t, p); a = temp[0]; diff --git a/src/main/java/com/thealgorithms/others/HappyNumbersSeq.java b/src/main/java/com/thealgorithms/others/HappyNumbersSeq.java index 57ff204c39b1..0ae1e451bc6a 100644 --- a/src/main/java/com/thealgorithms/others/HappyNumbersSeq.java +++ b/src/main/java/com/thealgorithms/others/HappyNumbersSeq.java @@ -5,7 +5,9 @@ import java.util.Scanner; import java.util.Set; -public class HappyNumbersSeq { +public final class HappyNumbersSeq { + private HappyNumbersSeq() { + } private static final Set CYCLE_NUMS = new HashSet<>(Arrays.asList(4, 16, 20, 37, 58, 145)); diff --git a/src/main/java/com/thealgorithms/others/Huffman.java b/src/main/java/com/thealgorithms/others/Huffman.java index cc8c8d09864f..4fdee5d5e70e 100644 --- a/src/main/java/com/thealgorithms/others/Huffman.java +++ b/src/main/java/com/thealgorithms/others/Huffman.java @@ -26,7 +26,9 @@ public int compare(HuffmanNode x, HuffmanNode y) { } } -public class Huffman { +public final class Huffman { + private Huffman() { + } // recursive function to print the // huffman-code through the tree traversal. diff --git a/src/main/java/com/thealgorithms/others/InsertDeleteInArray.java b/src/main/java/com/thealgorithms/others/InsertDeleteInArray.java index 201c0ad2dd80..15093549871b 100644 --- a/src/main/java/com/thealgorithms/others/InsertDeleteInArray.java +++ b/src/main/java/com/thealgorithms/others/InsertDeleteInArray.java @@ -1,8 +1,10 @@ package com.thealgorithms.others; -import java.util.*; +import java.util.Scanner; -public class InsertDeleteInArray { +public final class InsertDeleteInArray { + private InsertDeleteInArray() { + } public static void main(String[] args) { try (Scanner s = new Scanner(System.in)) { @@ -19,33 +21,32 @@ public static void main(String[] args) { // To insert a new element(we are creating a new array) System.out.println("Enter the index at which the element should be inserted"); - int insert_pos = s.nextInt(); + int insertPos = s.nextInt(); System.out.println("Enter the element to be inserted"); int ins = s.nextInt(); int size2 = size + 1; int[] b = new int[size2]; for (i = 0; i < size2; i++) { - if (i <= insert_pos) { + if (i <= insertPos) { b[i] = a[i]; } else { b[i] = a[i - 1]; } } - b[insert_pos] = ins; + b[insertPos] = ins; for (i = 0; i < size2; i++) { System.out.println(b[i]); } // To delete an element given the index System.out.println("Enter the index at which element is to be deleted"); - int del_pos = s.nextInt(); - for (i = del_pos; i < size2 - 1; i++) { + int delPos = s.nextInt(); + for (i = delPos; i < size2 - 1; i++) { b[i] = b[i + 1]; } for (i = 0; i < size2 - 1; i++) { System.out.println(b[i]); } - s.close(); } } } diff --git a/src/main/java/com/thealgorithms/others/KMP.java b/src/main/java/com/thealgorithms/others/KMP.java index 7fb5645a2726..73eaf2fc9beb 100644 --- a/src/main/java/com/thealgorithms/others/KMP.java +++ b/src/main/java/com/thealgorithms/others/KMP.java @@ -4,18 +4,20 @@ * Implementation of Knuth–Morris–Pratt algorithm Usage: see the main function * for an example */ -public class KMP { +public final class KMP { + private KMP() { + } // a working example public static void main(String[] args) { final String haystack = "AAAAABAAABA"; // This is the full string final String needle = "AAAA"; // This is the substring that we want to find - KMPmatcher(haystack, needle); + kmpMatcher(haystack, needle); } // find the starting index in string haystack[] that matches the search word P[] - public static void KMPmatcher(final String haystack, final String needle) { + public static void kmpMatcher(final String haystack, final String needle) { final int m = haystack.length(); final int n = needle.length(); final int[] pi = computePrefixFunction(needle); @@ -37,17 +39,17 @@ public static void KMPmatcher(final String haystack, final String needle) { } // return the prefix function - private static int[] computePrefixFunction(final String P) { - final int n = P.length(); + private static int[] computePrefixFunction(final String p) { + final int n = p.length(); final int[] pi = new int[n]; pi[0] = 0; int q = 0; for (int i = 1; i < n; i++) { - while (q > 0 && P.charAt(q) != P.charAt(i)) { + while (q > 0 && p.charAt(q) != p.charAt(i)) { q = pi[q - 1]; } - if (P.charAt(q) == P.charAt(i)) { + if (p.charAt(q) == p.charAt(i)) { q++; } diff --git a/src/main/java/com/thealgorithms/others/KochSnowflake.java b/src/main/java/com/thealgorithms/others/KochSnowflake.java index 8395b1f486a7..0e2600a7d72f 100644 --- a/src/main/java/com/thealgorithms/others/KochSnowflake.java +++ b/src/main/java/com/thealgorithms/others/KochSnowflake.java @@ -1,6 +1,8 @@ package com.thealgorithms.others; -import java.awt.*; +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -22,14 +24,16 @@ * https://natureofcode.com/book/chapter-8-fractals/ * #84-the-koch-curve-and-the-arraylist-technique ). */ -public class KochSnowflake { +public final class KochSnowflake { + private KochSnowflake() { + } public static void main(String[] args) { // Test Iterate-method ArrayList vectors = new ArrayList(); vectors.add(new Vector2(0, 0)); vectors.add(new Vector2(1, 0)); - ArrayList result = Iterate(vectors, 1); + ArrayList result = iterate(vectors, 1); assert result.get(0).x == 0; assert result.get(0).y == 0; @@ -50,7 +54,7 @@ public static void main(String[] args) { int imageWidth = 600; double offsetX = imageWidth / 10.; double offsetY = imageWidth / 3.7; - BufferedImage image = GetKochSnowflake(imageWidth, 5); + BufferedImage image = getKochSnowflake(imageWidth, 5); // The background should be white assert image.getRGB(0, 0) == new Color(255, 255, 255).getRGB(); @@ -76,10 +80,10 @@ public static void main(String[] args) { * @param steps The number of iterations. * @return The transformed vectors after the iteration-steps. */ - public static ArrayList Iterate(ArrayList initialVectors, int steps) { + public static ArrayList iterate(ArrayList initialVectors, int steps) { ArrayList vectors = initialVectors; for (int i = 0; i < steps; i++) { - vectors = IterationStep(vectors); + vectors = iterationStep(vectors); } return vectors; @@ -92,7 +96,7 @@ public static ArrayList Iterate(ArrayList initialVectors, int * @param steps The number of iterations. * @return The image of the rendered Koch snowflake. */ - public static BufferedImage GetKochSnowflake(int imageWidth, int steps) { + public static BufferedImage getKochSnowflake(int imageWidth, int steps) { if (imageWidth <= 0) { throw new IllegalArgumentException("imageWidth should be greater than zero"); } @@ -107,8 +111,8 @@ public static BufferedImage GetKochSnowflake(int imageWidth, int steps) { initialVectors.add(vector2); initialVectors.add(vector3); initialVectors.add(vector1); - ArrayList vectors = Iterate(initialVectors, steps); - return GetImage(vectors, imageWidth, imageWidth); + ArrayList vectors = iterate(initialVectors, steps); + return getImage(vectors, imageWidth, imageWidth); } /** @@ -121,7 +125,7 @@ public static BufferedImage GetKochSnowflake(int imageWidth, int steps) { * applied. * @return The transformed vectors after the iteration-step. */ - private static ArrayList IterationStep(ArrayList vectors) { + private static ArrayList iterationStep(ArrayList vectors) { ArrayList newVectors = new ArrayList(); for (int i = 0; i < vectors.size() - 1; i++) { Vector2 startVector = vectors.get(i); @@ -145,7 +149,7 @@ private static ArrayList IterationStep(ArrayList vectors) { * @param imageHeight The height of the rendered image. * @return The image of the rendered edges. */ - private static BufferedImage GetImage(ArrayList vectors, int imageWidth, int imageHeight) { + private static BufferedImage getImage(ArrayList vectors, int imageWidth, int imageHeight) { BufferedImage image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = image.createGraphics(); @@ -174,9 +178,10 @@ private static BufferedImage GetImage(ArrayList vectors, int imageWidth */ private static class Vector2 { - double x, y; + double x; + double y; - public Vector2(double x, double y) { + Vector2(double x, double y) { this.x = x; this.y = y; } diff --git a/src/main/java/com/thealgorithms/others/Krishnamurthy.java b/src/main/java/com/thealgorithms/others/Krishnamurthy.java index 1f7cd121933f..8e5ba7c6f1c7 100644 --- a/src/main/java/com/thealgorithms/others/Krishnamurthy.java +++ b/src/main/java/com/thealgorithms/others/Krishnamurthy.java @@ -2,10 +2,13 @@ import java.util.Scanner; -class Krishnamurthy { +final class Krishnamurthy { + private Krishnamurthy() { + } static int fact(int n) { - int i, p = 1; + int i; + int p = 1; for (i = n; i >= 1; i--) { p = p * i; } @@ -14,7 +17,9 @@ static int fact(int n) { public static void main(String[] args) { Scanner sc = new Scanner(System.in); - int a, b, s = 0; + int a; + int b; + int s = 0; System.out.print("Enter the number : "); a = sc.nextInt(); int n = a; diff --git a/src/main/java/com/thealgorithms/others/LineSweep.java b/src/main/java/com/thealgorithms/others/LineSweep.java index 9aa0f6faa8e6..946ba6edb475 100644 --- a/src/main/java/com/thealgorithms/others/LineSweep.java +++ b/src/main/java/com/thealgorithms/others/LineSweep.java @@ -11,14 +11,16 @@ * https://en.wikipedia.org/wiki/Sweep_line_algorithm * https://en.wikipedia.org/wiki/De_Morgan%27s_laws> */ -public class LineSweep { +public final class LineSweep { + private LineSweep() { + } /** * Find Maximum end point * param = ranges : Array of range[start,end] * return Maximum Endpoint */ - public static int FindMaximumEndPoint(int[][] ranges) { + public static int findMaximumEndPoint(int[][] ranges) { Arrays.sort(ranges, Comparator.comparingInt(a -> a[1])); return ranges[ranges.length - 1][1]; } @@ -30,7 +32,7 @@ public static int FindMaximumEndPoint(int[][] ranges) { */ public static boolean isOverlap(int[][] ranges) { - int maximumEndPoint = FindMaximumEndPoint(ranges); + int maximumEndPoint = findMaximumEndPoint(ranges); Arrays.sort(ranges, Comparator.comparingInt(a -> a[0])); int[] numberLine = new int[maximumEndPoint + 2]; for (int[] range : ranges) { diff --git a/src/main/java/com/thealgorithms/others/LinearCongruentialGenerator.java b/src/main/java/com/thealgorithms/others/LinearCongruentialGenerator.java index 346ae9f82186..36bcca3edc00 100644 --- a/src/main/java/com/thealgorithms/others/LinearCongruentialGenerator.java +++ b/src/main/java/com/thealgorithms/others/LinearCongruentialGenerator.java @@ -9,7 +9,10 @@ */ public class LinearCongruentialGenerator { - private double a, c, m, previousValue; + private final double a; + private final double c; + private final double m; + private double previousValue; /** * * diff --git a/src/main/java/com/thealgorithms/others/LowestBasePalindrome.java b/src/main/java/com/thealgorithms/others/LowestBasePalindrome.java index 9bc02535a306..c8328a4ee552 100644 --- a/src/main/java/com/thealgorithms/others/LowestBasePalindrome.java +++ b/src/main/java/com/thealgorithms/others/LowestBasePalindrome.java @@ -6,7 +6,7 @@ * @brief Class for finding the lowest base in which a given integer is a palindrome. cf. https://oeis.org/A016026 */ -final public class LowestBasePalindrome { +public final class LowestBasePalindrome { private LowestBasePalindrome() { } diff --git a/src/main/java/com/thealgorithms/others/Luhn.java b/src/main/java/com/thealgorithms/others/Luhn.java index fd5433ca7b65..600128a7725b 100644 --- a/src/main/java/com/thealgorithms/others/Luhn.java +++ b/src/main/java/com/thealgorithms/others/Luhn.java @@ -38,7 +38,9 @@ * * @see Wiki */ -public class Luhn { +public final class Luhn { + private Luhn() { + } /** * Check input digits array by Luhn algorithm. Initial array doesn't change diff --git a/src/main/java/com/thealgorithms/others/Mandelbrot.java b/src/main/java/com/thealgorithms/others/Mandelbrot.java index e60d5c02ccaf..6d7588090ba8 100644 --- a/src/main/java/com/thealgorithms/others/Mandelbrot.java +++ b/src/main/java/com/thealgorithms/others/Mandelbrot.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import java.awt.*; +import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -23,7 +23,9 @@ * also https://en.wikipedia.org/wiki/Plotting_algorithms_for_the_Mandelbrot_set * ) */ -public class Mandelbrot { +public final class Mandelbrot { + private Mandelbrot() { + } public static void main(String[] args) { // Test black and white diff --git a/src/main/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthK.java b/src/main/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthK.java index 3056f14dacfc..0bafc435aa75 100644 --- a/src/main/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthK.java +++ b/src/main/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthK.java @@ -8,7 +8,9 @@ * items from the end of the window are removed from consideration while new items from the stream take their place. * @author Swarga-codes (https://github.com/Swarga-codes) */ -public class MaximumSumOfDistinctSubarraysWithLengthK { +public final class MaximumSumOfDistinctSubarraysWithLengthK { + private MaximumSumOfDistinctSubarraysWithLengthK() { + } /* * Returns the maximum sum of subarray of size K consisting of distinct * elements. diff --git a/src/main/java/com/thealgorithms/others/MiniMaxAlgorithm.java b/src/main/java/com/thealgorithms/others/MiniMaxAlgorithm.java index 2672dc6f2892..cd2cd02ab908 100644 --- a/src/main/java/com/thealgorithms/others/MiniMaxAlgorithm.java +++ b/src/main/java/com/thealgorithms/others/MiniMaxAlgorithm.java @@ -55,7 +55,9 @@ public static void main(String[] args) { * @return The optimal score for the player that made the first move. */ public int miniMax(int depth, boolean isMaximizer, int index, boolean verbose) { - int bestScore, score1, score2; + int bestScore; + int score1; + int score2; if (depth == height) { // Leaf node reached. return scores[index]; diff --git a/src/main/java/com/thealgorithms/others/PageRank.java b/src/main/java/com/thealgorithms/others/PageRank.java index fa85e9700d3f..c7be7a9882bc 100644 --- a/src/main/java/com/thealgorithms/others/PageRank.java +++ b/src/main/java/com/thealgorithms/others/PageRank.java @@ -1,11 +1,13 @@ package com.thealgorithms.others; -import java.util.*; +import java.util.Scanner; class PageRank { public static void main(String[] args) { - int nodes, i, j; + int nodes; + int i; + int j; Scanner in = new Scanner(System.in); System.out.print("Enter the Number of WebPages: "); nodes = in.nextInt(); @@ -26,20 +28,20 @@ public static void main(String[] args) { public double[] pagerank = new double[10]; public void calc(double totalNodes) { - double InitialPageRank; - double OutgoingLinks = 0; - double DampingFactor = 0.85; - double[] TempPageRank = new double[10]; - int ExternalNodeNumber; - int InternalNodeNumber; + double initialPageRank; + double outgoingLinks = 0; + double dampingFactor = 0.85; + double[] tempPageRank = new double[10]; + int externalNodeNumber; + int internalNodeNumber; int k = 1; // For Traversing - int ITERATION_STEP = 1; - InitialPageRank = 1 / totalNodes; - System.out.printf(" Total Number of Nodes :" + totalNodes + "\t Initial PageRank of All Nodes :" + InitialPageRank + "\n"); + int iterationStep = 1; + initialPageRank = 1 / totalNodes; + System.out.printf(" Total Number of Nodes :" + totalNodes + "\t Initial PageRank of All Nodes :" + initialPageRank + "\n"); // 0th ITERATION _ OR _ INITIALIZATION PHASE // for (k = 1; k <= totalNodes; k++) { - this.pagerank[k] = InitialPageRank; + this.pagerank[k] = initialPageRank; } System.out.print("\n Initial PageRank Values , 0th Step \n"); @@ -47,40 +49,40 @@ public void calc(double totalNodes) { System.out.printf(" Page Rank of " + k + " is :\t" + this.pagerank[k] + "\n"); } - while (ITERATION_STEP <= 2) { // Iterations + while (iterationStep <= 2) { // Iterations // Store the PageRank for All Nodes in Temporary Array for (k = 1; k <= totalNodes; k++) { - TempPageRank[k] = this.pagerank[k]; + tempPageRank[k] = this.pagerank[k]; this.pagerank[k] = 0; } - for (InternalNodeNumber = 1; InternalNodeNumber <= totalNodes; InternalNodeNumber++) { - for (ExternalNodeNumber = 1; ExternalNodeNumber <= totalNodes; ExternalNodeNumber++) { - if (this.path[ExternalNodeNumber][InternalNodeNumber] == 1) { + for (internalNodeNumber = 1; internalNodeNumber <= totalNodes; internalNodeNumber++) { + for (externalNodeNumber = 1; externalNodeNumber <= totalNodes; externalNodeNumber++) { + if (this.path[externalNodeNumber][internalNodeNumber] == 1) { k = 1; - OutgoingLinks = 0; // Count the Number of Outgoing Links for each ExternalNodeNumber + outgoingLinks = 0; // Count the Number of Outgoing Links for each externalNodeNumber while (k <= totalNodes) { - if (this.path[ExternalNodeNumber][k] == 1) { - OutgoingLinks = OutgoingLinks + 1; // Counter for Outgoing Links + if (this.path[externalNodeNumber][k] == 1) { + outgoingLinks = outgoingLinks + 1; // Counter for Outgoing Links } k = k + 1; } // Calculate PageRank - this.pagerank[InternalNodeNumber] += TempPageRank[ExternalNodeNumber] * (1 / OutgoingLinks); + this.pagerank[internalNodeNumber] += tempPageRank[externalNodeNumber] * (1 / outgoingLinks); } } - System.out.printf("\n After " + ITERATION_STEP + "th Step \n"); + System.out.printf("\n After " + iterationStep + "th Step \n"); for (k = 1; k <= totalNodes; k++) { System.out.printf(" Page Rank of " + k + " is :\t" + this.pagerank[k] + "\n"); } - ITERATION_STEP = ITERATION_STEP + 1; + iterationStep = iterationStep + 1; } // Add the Damping Factor to PageRank for (k = 1; k <= totalNodes; k++) { - this.pagerank[k] = (1 - DampingFactor) + DampingFactor * this.pagerank[k]; + this.pagerank[k] = (1 - dampingFactor) + dampingFactor * this.pagerank[k]; } // Display PageRank diff --git a/src/main/java/com/thealgorithms/others/PasswordGen.java b/src/main/java/com/thealgorithms/others/PasswordGen.java index c079d1cbebd2..7d21f112d480 100644 --- a/src/main/java/com/thealgorithms/others/PasswordGen.java +++ b/src/main/java/com/thealgorithms/others/PasswordGen.java @@ -11,14 +11,11 @@ * @author AKS1996 * @date 2017.10.25 */ -class PasswordGen { - - public static void main(String[] args) { - String password = generatePassword(8, 16); - System.out.print("Password: " + password); +final class PasswordGen { + private PasswordGen() { } - static String generatePassword(int min_length, int max_length) { + static String generatePassword(int minLength, int maxLength) { Random random = new Random(); String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; @@ -38,7 +35,7 @@ static String generatePassword(int min_length, int max_length) { StringBuilder password = new StringBuilder(); // Note that size of the password is also random - for (int i = random.nextInt(max_length - min_length) + min_length; i > 0; --i) { + for (int i = random.nextInt(maxLength - minLength) + minLength; i > 0; --i) { password.append(letters.get(random.nextInt(letters.size()))); } diff --git a/src/main/java/com/thealgorithms/others/PerlinNoise.java b/src/main/java/com/thealgorithms/others/PerlinNoise.java index 2f774e16ba90..e6551ed6b9ee 100644 --- a/src/main/java/com/thealgorithms/others/PerlinNoise.java +++ b/src/main/java/com/thealgorithms/others/PerlinNoise.java @@ -7,7 +7,9 @@ * For detailed info and implementation see: Perlin-Noise */ -public class PerlinNoise { +public final class PerlinNoise { + private PerlinNoise() { + } /** * @param width width of noise array diff --git a/src/main/java/com/thealgorithms/others/QueueUsingTwoStacks.java b/src/main/java/com/thealgorithms/others/QueueUsingTwoStacks.java index 6b766dc3f5a0..259e108a354d 100644 --- a/src/main/java/com/thealgorithms/others/QueueUsingTwoStacks.java +++ b/src/main/java/com/thealgorithms/others/QueueUsingTwoStacks.java @@ -25,7 +25,7 @@ class QueueWithStack { /** * Constructor */ - public QueueWithStack() { + QueueWithStack() { this.inStack = new Stack<>(); this.outStack = new Stack<>(); } @@ -112,7 +112,9 @@ public boolean isOutStackEmpty() { * * @author sahilb2 (https://www.github.com/sahilb2) */ -public class QueueUsingTwoStacks { +public final class QueueUsingTwoStacks { + private QueueUsingTwoStacks() { + } /** * Main method diff --git a/src/main/java/com/thealgorithms/others/RabinKarp.java b/src/main/java/com/thealgorithms/others/RabinKarp.java index 8757f03bab4b..f8ca33becad3 100644 --- a/src/main/java/com/thealgorithms/others/RabinKarp.java +++ b/src/main/java/com/thealgorithms/others/RabinKarp.java @@ -7,10 +7,12 @@ // An implementation of Rabin-Karp string matching algorithm // Program will simply end if there is no match -public class RabinKarp { +public final class RabinKarp { + private RabinKarp() { + } public static Scanner scanner = null; - public static final int d = 256; + public static final int ALPHABET_SIZE = 256; public static void main(String[] args) { scanner = new Scanner(System.in); @@ -32,14 +34,14 @@ private static void searchPat(String text, String pattern, int q) { int j = 0; int i = 0; - h = (int) Math.pow(d, m - 1) % q; + h = (int) Math.pow(ALPHABET_SIZE, m - 1) % q; for (i = 0; i < m; i++) { // hash value is calculated for each character and then added with the hash value of the // next character for pattern as well as the text for length equal to the length of // pattern - p = (d * p + pattern.charAt(i)) % q; - t = (d * t + text.charAt(i)) % q; + p = (ALPHABET_SIZE * p + pattern.charAt(i)) % q; + t = (ALPHABET_SIZE * t + text.charAt(i)) % q; } for (i = 0; i <= n - m; i++) { @@ -67,7 +69,7 @@ private static void searchPat(String text, String pattern, int q) { // value of the next character after the end of the evaluated characters is added to get // the hash value of the next window of characters in the text if (i < n - m) { - t = (d * (t - text.charAt(i) * h) + text.charAt(i + m)) % q; + t = (ALPHABET_SIZE * (t - text.charAt(i) * h) + text.charAt(i + m)) % q; // if hash value becomes less than zero than q is added to make it positive if (t < 0) { diff --git a/src/main/java/com/thealgorithms/others/RemoveDuplicateFromString.java b/src/main/java/com/thealgorithms/others/RemoveDuplicateFromString.java index 5e4662b0b052..695a10648b6c 100644 --- a/src/main/java/com/thealgorithms/others/RemoveDuplicateFromString.java +++ b/src/main/java/com/thealgorithms/others/RemoveDuplicateFromString.java @@ -6,7 +6,9 @@ /** * @author Varun Upadhyay (https://github.com/varunu28) */ -public class RemoveDuplicateFromString { +public final class RemoveDuplicateFromString { + private RemoveDuplicateFromString() { + } public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); diff --git a/src/main/java/com/thealgorithms/others/ReturnSubsequence.java b/src/main/java/com/thealgorithms/others/ReturnSubsequence.java index 0d8cbea0d3b3..ef376c47a8f8 100644 --- a/src/main/java/com/thealgorithms/others/ReturnSubsequence.java +++ b/src/main/java/com/thealgorithms/others/ReturnSubsequence.java @@ -2,7 +2,9 @@ import java.util.Scanner; -public class ReturnSubsequence { +public final class ReturnSubsequence { + private ReturnSubsequence() { + } public static void main(String[] args) { System.out.println("Enter String: "); @@ -28,18 +30,16 @@ private static String[] returnSubsequence(String givenString) { ans[0] = ""; return ans; } - String[] SmallAns = returnSubsequence(givenString.substring(1)); // recursive call to get subsequences of substring starting from index + String[] smallAns = returnSubsequence(givenString.substring(1)); // recursive call to get subsequences of substring starting from index // position=1 - String[] ans = new String[2 * SmallAns.length]; // Our answer will be an array off string of size=2*SmallAns - int i = 0; - for (; i < SmallAns.length; i++) { - ans[i] = SmallAns[i]; // Copying all the strings present in SmallAns to ans string array - } - for (int k = 0; k < SmallAns.length; k++) { - ans[k + SmallAns.length] = givenString.charAt(0) + SmallAns[k]; // Insert character at index=0 of the given + String[] ans = new String[2 * smallAns.length]; // Our answer will be an array off string of size=2*smallAns + System.arraycopy(smallAns, 0, ans, 0, smallAns.length); + + for (int k = 0; k < smallAns.length; k++) { + ans[k + smallAns.length] = givenString.charAt(0) + smallAns[k]; // Insert character at index=0 of the given // substring in front of every string - // in SmallAns + // in smallAns } return ans; } diff --git a/src/main/java/com/thealgorithms/others/ReverseStackUsingRecursion.java b/src/main/java/com/thealgorithms/others/ReverseStackUsingRecursion.java index 7c0fe0b2c6f6..2c26f8eae4dc 100644 --- a/src/main/java/com/thealgorithms/others/ReverseStackUsingRecursion.java +++ b/src/main/java/com/thealgorithms/others/ReverseStackUsingRecursion.java @@ -3,7 +3,9 @@ /* Program to reverse a Stack using Recursion*/ import java.util.Stack; -public class ReverseStackUsingRecursion { +public final class ReverseStackUsingRecursion { + private ReverseStackUsingRecursion() { + } // Stack private static Stack stack = new Stack<>(); diff --git a/src/main/java/com/thealgorithms/others/RootPrecision.java b/src/main/java/com/thealgorithms/others/RootPrecision.java index e22db1b99931..bc195ffca5ae 100644 --- a/src/main/java/com/thealgorithms/others/RootPrecision.java +++ b/src/main/java/com/thealgorithms/others/RootPrecision.java @@ -2,33 +2,35 @@ import java.util.Scanner; -public class RootPrecision { +public final class RootPrecision { + private RootPrecision() { + } public static void main(String[] args) { // take input Scanner scn = new Scanner(System.in); - // N is the input number - int N = scn.nextInt(); + // n is the input number + int n = scn.nextInt(); - // P is precision value for eg - P is 3 in 2.564 and 5 in 3.80870. - int P = scn.nextInt(); - System.out.println(squareRoot(N, P)); + // p is precision value for eg - p is 3 in 2.564 and 5 in 3.80870. + int p = scn.nextInt(); + System.out.println(squareRoot(n, p)); scn.close(); } - public static double squareRoot(int N, int P) { + public static double squareRoot(int n, int p) { // rv means return value double rv; - double root = Math.pow(N, 0.5); + double root = Math.pow(n, 0.5); // calculate precision to power of 10 and then multiply it with root value. - int precision = (int) Math.pow(10, P); + int precision = (int) Math.pow(10, p); root = root * precision; /*typecast it into integer then divide by precision and again typecast into double - so as to have decimal points upto P precision */ + so as to have decimal points upto p precision */ rv = (int) root; return rv / precision; diff --git a/src/main/java/com/thealgorithms/others/RotateMatriceBy90Degree.java b/src/main/java/com/thealgorithms/others/RotateMatrixBy90Degrees.java similarity index 88% rename from src/main/java/com/thealgorithms/others/RotateMatriceBy90Degree.java rename to src/main/java/com/thealgorithms/others/RotateMatrixBy90Degrees.java index e2b47f8e627d..2ea3de814d0d 100644 --- a/src/main/java/com/thealgorithms/others/RotateMatriceBy90Degree.java +++ b/src/main/java/com/thealgorithms/others/RotateMatrixBy90Degrees.java @@ -4,9 +4,11 @@ * Given a matrix of size n x n We have to rotate this matrix by 90 Degree Here * is the algorithm for this problem . */ -import java.util.*; +import java.util.Scanner; -class Rotate_by_90_degree { +final class Rotate_by_90_degrees { + private Rotate_by_90_degrees() { + } public static void main(String[] args) { Scanner sc = new Scanner(System.in); @@ -41,7 +43,9 @@ static void printMatrix(int[][] arr) { /** * Class containing the algo to roate matrix by 90 degree */ -class Rotate { +final class Rotate { + private Rotate() { + } static void rotate(int[][] a) { int n = a.length; @@ -54,7 +58,8 @@ static void rotate(int[][] a) { } } } - int i = 0, k = n - 1; + int i = 0; + int k = n - 1; while (i < k) { for (int j = 0; j < n; j++) { int temp = a[i][j]; diff --git a/src/main/java/com/thealgorithms/others/SieveOfEratosthenes.java b/src/main/java/com/thealgorithms/others/SieveOfEratosthenes.java index d7dcdbd11493..6a3412500d11 100644 --- a/src/main/java/com/thealgorithms/others/SieveOfEratosthenes.java +++ b/src/main/java/com/thealgorithms/others/SieveOfEratosthenes.java @@ -5,7 +5,7 @@ /** * @brief utility class implementing Sieve of Eratosthenes */ -final public class SieveOfEratosthenes { +public final class SieveOfEratosthenes { private SieveOfEratosthenes() { } @@ -19,7 +19,8 @@ private static Type[] sievePrimesTill(int n) { checkInput(n); Type[] isPrimeArray = new Type[n + 1]; Arrays.fill(isPrimeArray, Type.PRIME); - isPrimeArray[0] = isPrimeArray[1] = Type.NOT_PRIME; + isPrimeArray[0] = Type.NOT_PRIME; + isPrimeArray[1] = Type.NOT_PRIME; double cap = Math.sqrt(n); for (int i = 2; i <= cap; i++) { diff --git a/src/main/java/com/thealgorithms/others/SkylineProblem.java b/src/main/java/com/thealgorithms/others/SkylineProblem.java index 149adf4349cf..ece398e70405 100644 --- a/src/main/java/com/thealgorithms/others/SkylineProblem.java +++ b/src/main/java/com/thealgorithms/others/SkylineProblem.java @@ -59,7 +59,8 @@ public ArrayList findSkyline(int start, int end) { } public ArrayList mergeSkyline(ArrayList sky1, ArrayList sky2) { - int currentH1 = 0, currentH2 = 0; + int currentH1 = 0; + int currentH2 = 0; ArrayList skyline = new ArrayList<>(); int maxH = 0; diff --git a/src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java b/src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java index fa3869bc5d2e..22979e59b555 100644 --- a/src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java +++ b/src/main/java/com/thealgorithms/others/StringMatchFiniteAutomata.java @@ -5,11 +5,13 @@ */ import java.util.Scanner; -// An implementaion of string matching using finite automata -public class StringMatchFiniteAutomata { +// An implementation of string matching using finite automata +public final class StringMatchFiniteAutomata { + private StringMatchFiniteAutomata() { + } public static final int CHARS = 256; - public static int[][] FA; + public static int[][] fa; public static Scanner scanner = null; public static void main(String[] args) { @@ -28,13 +30,13 @@ public static void searchPat(String text, String pat) { int m = pat.length(); int n = text.length(); - FA = new int[m + 1][CHARS]; + fa = new int[m + 1][CHARS]; - computeFA(pat, m, FA); + computeFA(pat, m, fa); int state = 0; for (int i = 0; i < n; i++) { - state = FA[state][text.charAt(i)]; + state = fa[state][text.charAt(i)]; if (state == m) { System.out.println("Pattern found at index " + (i - m + 1)); @@ -42,11 +44,11 @@ public static void searchPat(String text, String pat) { } } - // Computes finite automata for the partern - public static void computeFA(String pat, int m, int[][] FA) { + // Computes finite automata for the pattern + public static void computeFA(String pat, int m, int[][] fa) { for (int state = 0; state <= m; ++state) { for (int x = 0; x < CHARS; ++x) { - FA[state][x] = getNextState(pat, m, state, x); + fa[state][x] = getNextState(pat, m, state, x); } } } diff --git a/src/main/java/com/thealgorithms/others/Sudoku.java b/src/main/java/com/thealgorithms/others/Sudoku.java index d2bc1d5c7add..0839a376c5de 100644 --- a/src/main/java/com/thealgorithms/others/Sudoku.java +++ b/src/main/java/com/thealgorithms/others/Sudoku.java @@ -1,6 +1,8 @@ package com.thealgorithms.others; -class Sudoku { +final class Sudoku { + private Sudoku() { + } public static boolean isSafe(int[][] board, int row, int col, int num) { // Row has the unique (row-clash) @@ -84,16 +86,16 @@ public static boolean solveSudoku(int[][] board, int n) { return false; } - public static void print(int[][] board, int N) { + public static void print(int[][] board, int n) { // We got the answer, just print it - for (int r = 0; r < N; r++) { - for (int d = 0; d < N; d++) { + for (int r = 0; r < n; r++) { + for (int d = 0; d < n; d++) { System.out.print(board[r][d]); System.out.print(" "); } System.out.print("\n"); - if ((r + 1) % (int) Math.sqrt(N) == 0) { + if ((r + 1) % (int) Math.sqrt(n) == 0) { System.out.print(""); } } @@ -112,11 +114,11 @@ public static void main(String[] args) { {0, 0, 0, 0, 0, 0, 0, 7, 4}, {0, 0, 5, 2, 0, 6, 3, 0, 0}, }; - int N = board.length; + int n = board.length; - if (solveSudoku(board, N)) { + if (solveSudoku(board, n)) { // print solution - print(board, N); + print(board, n); } else { System.out.println("No solution"); } diff --git a/src/main/java/com/thealgorithms/others/TopKWords.java b/src/main/java/com/thealgorithms/others/TopKWords.java deleted file mode 100644 index 664a3ec92eac..000000000000 --- a/src/main/java/com/thealgorithms/others/TopKWords.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.thealgorithms.others; - -import java.io.*; -import java.util.*; - -/* display the most frequent K words in the file and the times it appear -in the file – shown in order (ignore case and periods) */ -public class TopKWords { - - static class CountWords { - - private String fileName; - - public CountWords(String fileName) { - this.fileName = fileName; - } - - public Map getDictionary() { - Map dictionary = new HashMap<>(); - FileInputStream fis = null; - - try { - fis = new FileInputStream(fileName); // open the file - int in = 0; - String s = ""; // init a empty word - in = fis.read(); // read one character - - while (-1 != in) { - if (Character.isLetter((char) in)) { - s += (char) in; // if get a letter, append to s - } else { - // this branch means an entire word has just been read - if (s.length() > 0) { - // see whether word exists or not - if (dictionary.containsKey(s)) { - // if exist, count++ - dictionary.put(s, dictionary.get(s) + 1); - } else { - // if not exist, initiate count of this word with 1 - dictionary.put(s, 1); - } - } - s = ""; // reInit a empty word - } - in = fis.read(); - } - return dictionary; - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - // you always have to close the I/O streams - if (fis != null) { - fis.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - return null; - } - } - - public static void main(String[] args) { - // you can replace the filePath with yours - CountWords cw = new CountWords("/Users/lisanaaa/Desktop/words.txt"); - Map dictionary = cw.getDictionary(); // get the words dictionary: {word: frequency} - - // we change the map to list for convenient sort - List> list = new ArrayList<>(dictionary.entrySet()); - - // sort by lambda valueComparator - list.sort(Comparator.comparing(m -> m.getValue())); - - Scanner input = new Scanner(System.in); - int k = input.nextInt(); - while (k > list.size()) { - System.out.println("Retype a number, your number is too large"); - input = new Scanner(System.in); - k = input.nextInt(); - } - for (int i = 0; i < k; i++) { - System.out.println(list.get(list.size() - i - 1)); - } - input.close(); - } -} diff --git a/src/main/java/com/thealgorithms/others/TowerOfHanoi.java b/src/main/java/com/thealgorithms/others/TowerOfHanoi.java index c0fb4d75f84d..2216799b987a 100644 --- a/src/main/java/com/thealgorithms/others/TowerOfHanoi.java +++ b/src/main/java/com/thealgorithms/others/TowerOfHanoi.java @@ -2,7 +2,9 @@ import java.util.Scanner; -class TowerOfHanoi { +final class TowerOfHanoi { + private TowerOfHanoi() { + } public static void shift(int n, String startPole, String intermediatePole, String endPole) { // if n becomes zero the program returns thus ending the loop. @@ -10,7 +12,7 @@ public static void shift(int n, String startPole, String intermediatePole, Strin // Shift function is called in recursion for swapping the n-1 disc from the startPole to // the intermediatePole shift(n - 1, startPole, endPole, intermediatePole); - System.out.format("Move %d from %s to %s\n", n, startPole, endPole); // Result Printing + System.out.format("Move %d from %s to %s%n", n, startPole, endPole); // Result Printing // Shift function is called in recursion for swapping the n-1 disc from the // intermediatePole to the endPole shift(n - 1, intermediatePole, startPole, endPole); diff --git a/src/main/java/com/thealgorithms/others/TwoPointers.java b/src/main/java/com/thealgorithms/others/TwoPointers.java index de44354a6602..01391ec72e78 100644 --- a/src/main/java/com/thealgorithms/others/TwoPointers.java +++ b/src/main/java/com/thealgorithms/others/TwoPointers.java @@ -9,7 +9,9 @@ *

* link: https://www.geeksforgeeks.org/two-pointers-technique/ */ -class TwoPointers { +final class TwoPointers { + private TwoPointers() { + } /** * Given a sorted array arr (sorted in ascending order). Find if there diff --git a/src/main/java/com/thealgorithms/others/Verhoeff.java b/src/main/java/com/thealgorithms/others/Verhoeff.java index 2144f373e2a4..9088612aaa43 100644 --- a/src/main/java/com/thealgorithms/others/Verhoeff.java +++ b/src/main/java/com/thealgorithms/others/Verhoeff.java @@ -23,7 +23,9 @@ * @see Wiki. * Verhoeff algorithm */ -public class Verhoeff { +public final class Verhoeff { + private Verhoeff() { + } /** * Table {@code d}. Based on multiplication in the dihedral group D5 and is diff --git a/src/main/java/com/thealgorithms/others/cn/HammingDistance.java b/src/main/java/com/thealgorithms/others/cn/HammingDistance.java index 820917a17229..c8239d53d606 100644 --- a/src/main/java/com/thealgorithms/others/cn/HammingDistance.java +++ b/src/main/java/com/thealgorithms/others/cn/HammingDistance.java @@ -1,6 +1,6 @@ package com.thealgorithms.others.cn; -final public class HammingDistance { +public final class HammingDistance { private HammingDistance() { } diff --git a/src/main/java/com/thealgorithms/scheduling/FCFSScheduling.java b/src/main/java/com/thealgorithms/scheduling/FCFSScheduling.java index e73937f60b48..b22e81fe560e 100644 --- a/src/main/java/com/thealgorithms/scheduling/FCFSScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/FCFSScheduling.java @@ -40,8 +40,8 @@ private void evaluateWaitingTime() { } private void evaluateTurnAroundTime() { - for (int i = 0; i < processes.size(); i++) { - processes.get(i).setTurnAroundTimeTime(processes.get(i).getBurstTime() + processes.get(i).getWaitingTime()); + for (final var process : processes) { + process.setTurnAroundTimeTime(process.getBurstTime() + process.getWaitingTime()); } } } diff --git a/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java b/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java index 7b058bcee625..9bcd5df81056 100644 --- a/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/PreemptivePriorityScheduling.java @@ -1,6 +1,9 @@ package com.thealgorithms.scheduling; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.PriorityQueue; /** * Preemptive Priority Scheduling Algorithm @@ -13,7 +16,7 @@ class Process { int burstTime; int priority; - public Process(String name, int arrivalTime, int burstTime, int priority) { + Process(String name, int arrivalTime, int burstTime, int priority) { this.name = name; this.arrivalTime = arrivalTime; this.burstTime = burstTime; @@ -21,7 +24,9 @@ public Process(String name, int arrivalTime, int burstTime, int priority) { } } -public class PreemptivePriorityScheduling { +public final class PreemptivePriorityScheduling { + private PreemptivePriorityScheduling() { + } public static List preemptivePriorityScheduling(List processes) { List ganttChart = new ArrayList<>(); PriorityQueue readyQueue = new PriorityQueue<>(Comparator.comparingInt(p -> - p.priority)); diff --git a/src/main/java/com/thealgorithms/scheduling/RRScheduling.java b/src/main/java/com/thealgorithms/scheduling/RRScheduling.java index 9968f172b482..991c9a4f6148 100644 --- a/src/main/java/com/thealgorithms/scheduling/RRScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/RRScheduling.java @@ -95,6 +95,8 @@ private void evaluateTurnAroundTime() { } private void evaluateWaitingTime() { - for (int i = 0; i < processes.size(); i++) processes.get(i).setWaitingTime(processes.get(i).getTurnAroundTimeTime() - processes.get(i).getBurstTime()); + for (final var process : processes) { + process.setWaitingTime(process.getTurnAroundTimeTime() - process.getBurstTime()); + } } } diff --git a/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java b/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java index 2bc5f54ce0dd..ca2144e4924f 100644 --- a/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/SJFScheduling.java @@ -24,7 +24,9 @@ public class SJFScheduling { sortByArrivalTime(); } protected void sortByArrivalTime() { - int size = processes.size(), i, j; + int size = processes.size(); + int i; + int j; ProcessDetails temp; for (i = 0; i < size; i++) { for (j = i + 1; j < size - 1; j++) { @@ -44,8 +46,12 @@ protected void sortByArrivalTime() { public void scheduleProcesses() { ArrayList ready = new ArrayList<>(); - int size = processes.size(), runtime, time = 0; - int executed = 0, j, k = 0; + int size = processes.size(); + int runtime; + int time = 0; + int executed = 0; + int j; + int k = 0; ProcessDetails running; if (size == 0) { @@ -77,25 +83,28 @@ public void scheduleProcesses() { /** * this function evaluates the shortest job of all the ready processes (based on a process * burst time) - * @param ReadyProcesses an array list of ready processes + * @param readyProcesses an array list of ready processes * @return returns the process' with the shortest burst time OR NULL if there are no ready * processes */ - private ProcessDetails findShortestJob(ArrayList ReadyProcesses) { - if (ReadyProcesses.isEmpty()) { + private ProcessDetails findShortestJob(ArrayList readyProcesses) { + if (readyProcesses.isEmpty()) { return null; } - int i, size = ReadyProcesses.size(); - int minBurstTime = ReadyProcesses.get(0).getBurstTime(), temp, positionOfShortestJob = 0; + int i; + int size = readyProcesses.size(); + int minBurstTime = readyProcesses.get(0).getBurstTime(); + int temp; + int positionOfShortestJob = 0; for (i = 1; i < size; i++) { - temp = ReadyProcesses.get(i).getBurstTime(); + temp = readyProcesses.get(i).getBurstTime(); if (minBurstTime > temp) { minBurstTime = temp; positionOfShortestJob = i; } } - return ReadyProcesses.get(positionOfShortestJob); + return readyProcesses.get(positionOfShortestJob); } } diff --git a/src/main/java/com/thealgorithms/scheduling/SRTFScheduling.java b/src/main/java/com/thealgorithms/scheduling/SRTFScheduling.java index ad8aeabacad8..99214fff20c4 100644 --- a/src/main/java/com/thealgorithms/scheduling/SRTFScheduling.java +++ b/src/main/java/com/thealgorithms/scheduling/SRTFScheduling.java @@ -31,7 +31,8 @@ public SRTFScheduling(ArrayList processes) { } public void evaluateScheduling() { - int time = 0, cr = 0; // cr=current running process, time= units of time + int time = 0; + int cr = 0; // cr=current running process, time= units of time int n = processes.size(); int[] remainingTime = new int[n]; diff --git a/src/main/java/com/thealgorithms/searches/BinarySearch2dArray.java b/src/main/java/com/thealgorithms/searches/BinarySearch2dArray.java index e4c0cf9d06a2..40b3cd0c20e3 100644 --- a/src/main/java/com/thealgorithms/searches/BinarySearch2dArray.java +++ b/src/main/java/com/thealgorithms/searches/BinarySearch2dArray.java @@ -8,16 +8,21 @@ above it will also be smaller than the target), else that element is greater than the target, then the rows below it are ignored. */ -public class BinarySearch2dArray { +public final class BinarySearch2dArray { + private BinarySearch2dArray() { + } - static int[] BinarySearch(int[][] arr, int target) { - int rowCount = arr.length, colCount = arr[0].length; + static int[] binarySearch(int[][] arr, int target) { + int rowCount = arr.length; + int colCount = arr[0].length; if (rowCount == 1) { return binarySearch(arr, target, 0, 0, colCount); } - int startRow = 0, endRow = rowCount - 1, midCol = colCount / 2; + int startRow = 0; + int endRow = rowCount - 1; + int midCol = colCount / 2; while (startRow < endRow - 1) { int midRow = startRow + (endRow - startRow) / 2; // getting the index of middle row diff --git a/src/main/java/com/thealgorithms/searches/BreadthFirstSearch.java b/src/main/java/com/thealgorithms/searches/BreadthFirstSearch.java index 77043a03ffa3..debab98c67a8 100644 --- a/src/main/java/com/thealgorithms/searches/BreadthFirstSearch.java +++ b/src/main/java/com/thealgorithms/searches/BreadthFirstSearch.java @@ -1,7 +1,11 @@ package com.thealgorithms.searches; import com.thealgorithms.datastructures.Node; -import java.util.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Queue; /** * @author: caos321 diff --git a/src/main/java/com/thealgorithms/searches/HowManyTimesRotated.java b/src/main/java/com/thealgorithms/searches/HowManyTimesRotated.java index dea0db37b3e5..8e601f9873b3 100644 --- a/src/main/java/com/thealgorithms/searches/HowManyTimesRotated.java +++ b/src/main/java/com/thealgorithms/searches/HowManyTimesRotated.java @@ -1,6 +1,6 @@ package com.thealgorithms.searches; -import java.util.*; +import java.util.Scanner; /* Problem Statement: @@ -25,7 +25,9 @@ at the rotated array, to identify the minimum element (say a[i]), we observe tha 1. [1,2,3,4] Number of rotations: 0 or 4(Both valid) 2. [15,17,2,3,5] Number of rotations: 3 */ -class HowManyTimesRotated { +final class HowManyTimesRotated { + private HowManyTimesRotated() { + } public static void main(String[] args) { Scanner sc = new Scanner(System.in); diff --git a/src/main/java/com/thealgorithms/searches/InterpolationSearch.java b/src/main/java/com/thealgorithms/searches/InterpolationSearch.java index 215ecdef7987..aa1ff412b6a7 100644 --- a/src/main/java/com/thealgorithms/searches/InterpolationSearch.java +++ b/src/main/java/com/thealgorithms/searches/InterpolationSearch.java @@ -23,7 +23,8 @@ class InterpolationSearch { */ public int find(int[] array, int key) { // Find indexes of two corners - int start = 0, end = (array.length - 1); + int start = 0; + int end = (array.length - 1); // Since array is sorted, an element present // in array must be in range defined by corner diff --git a/src/main/java/com/thealgorithms/searches/IterativeBinarySearch.java b/src/main/java/com/thealgorithms/searches/IterativeBinarySearch.java index 324b8f582937..49a86e4e53a8 100644 --- a/src/main/java/com/thealgorithms/searches/IterativeBinarySearch.java +++ b/src/main/java/com/thealgorithms/searches/IterativeBinarySearch.java @@ -32,7 +32,10 @@ public final class IterativeBinarySearch implements SearchAlgorithm { */ @Override public > int find(T[] array, T key) { - int l, r, k, cmp; + int l; + int r; + int k; + int cmp; l = 0; r = array.length - 1; diff --git a/src/main/java/com/thealgorithms/searches/KMPSearch.java b/src/main/java/com/thealgorithms/searches/KMPSearch.java index dd728d81bd23..3648a4b08b86 100644 --- a/src/main/java/com/thealgorithms/searches/KMPSearch.java +++ b/src/main/java/com/thealgorithms/searches/KMPSearch.java @@ -2,26 +2,26 @@ class KMPSearch { - int KMPSearch(String pat, String txt) { - int M = pat.length(); - int N = txt.length(); + int kmpSearch(String pat, String txt) { + int m = pat.length(); + int n = txt.length(); // create lps[] that will hold the longest // prefix suffix values for pattern - int[] lps = new int[M]; + int[] lps = new int[m]; int j = 0; // index for pat[] // Preprocess the pattern (calculate lps[] // array) - computeLPSArray(pat, M, lps); + computeLPSArray(pat, m, lps); int i = 0; // index for txt[] - while ((N - i) >= (M - j)) { + while ((n - i) >= (m - j)) { if (pat.charAt(j) == txt.charAt(i)) { j++; i++; } - if (j == M) { + if (j == m) { System.out.println("Found pattern " + "at index " + (i - j)); int index = (i - j); @@ -29,7 +29,7 @@ int KMPSearch(String pat, String txt) { return index; } // mismatch after j matches - else if (i < N && pat.charAt(j) != txt.charAt(i)) { + else if (i < n && pat.charAt(j) != txt.charAt(i)) { // Do not match lps[0..lps[j-1]] characters, // they will match anyway if (j != 0) @@ -42,14 +42,14 @@ else if (i < N && pat.charAt(j) != txt.charAt(i)) { return -1; } - void computeLPSArray(String pat, int M, int[] lps) { + void computeLPSArray(String pat, int m, int[] lps) { // length of the previous longest prefix suffix int len = 0; int i = 1; lps[0] = 0; // lps[0] is always 0 - // the loop calculates lps[i] for i = 1 to M-1 - while (i < M) { + // the loop calculates lps[i] for i = 1 to m-1 + while (i < m) { if (pat.charAt(i) == pat.charAt(len)) { len++; lps[i] = len; diff --git a/src/main/java/com/thealgorithms/searches/LinearSearchThread.java b/src/main/java/com/thealgorithms/searches/LinearSearchThread.java index 6e9d73af6b1f..b354d312d1b3 100644 --- a/src/main/java/com/thealgorithms/searches/LinearSearchThread.java +++ b/src/main/java/com/thealgorithms/searches/LinearSearchThread.java @@ -2,7 +2,9 @@ import java.util.Scanner; -public class LinearSearchThread { +public final class LinearSearchThread { + private LinearSearchThread() { + } public static void main(String[] args) { int[] list = new int[200]; @@ -40,7 +42,8 @@ public static void main(String[] args) { class Searcher extends Thread { private final int[] arr; - private final int left, right; + private final int left; + private final int right; private final int x; private boolean found; diff --git a/src/main/java/com/thealgorithms/searches/MonteCarloTreeSearch.java b/src/main/java/com/thealgorithms/searches/MonteCarloTreeSearch.java index 58afc8dfc00d..268c33cef610 100644 --- a/src/main/java/com/thealgorithms/searches/MonteCarloTreeSearch.java +++ b/src/main/java/com/thealgorithms/searches/MonteCarloTreeSearch.java @@ -78,7 +78,7 @@ public Node monteCarloTreeSearch(Node rootNode) { winnerNode = getWinnerNode(rootNode); printScores(rootNode); - System.out.format("\nThe optimal node is: %02d\n", rootNode.childNodes.indexOf(winnerNode) + 1); + System.out.format("%nThe optimal node is: %02d%n", rootNode.childNodes.indexOf(winnerNode) + 1); return winnerNode; } diff --git a/src/main/java/com/thealgorithms/searches/OrderAgnosticBinarySearch.java b/src/main/java/com/thealgorithms/searches/OrderAgnosticBinarySearch.java index 8ae304f6103f..cdd256150871 100644 --- a/src/main/java/com/thealgorithms/searches/OrderAgnosticBinarySearch.java +++ b/src/main/java/com/thealgorithms/searches/OrderAgnosticBinarySearch.java @@ -1,46 +1,48 @@ -package com.thealgorithms.searches; - -// URL: https://www.geeksforgeeks.org/order-agnostic-binary-search/ - -/* Order Agnostic Binary Search is an algorithm where we do not know whether the given - sorted array is ascending or descending order. - We declare a boolean variable to find whether the array is ascending order. - In the while loop, we use the two pointer method (start and end) to get the middle element. - if the middle element is equal to our target element, then that is the answer. - If not, then we check if the array is ascending or descending order. - Depending upon the condition, respective statements will be executed and we will get our answer. - */ - -public class OrderAgnosticBinarySearch { - - static int BinSearchAlgo(int[] arr, int start, int end, int target) { - - // Checking whether the given array is ascending order - boolean AscOrd = arr[start] < arr[end]; - - while (start <= end) { - int middle = start + (end - start) / 2; - - // Check if the desired element is present at the middle position - if (arr[middle] == target) return middle; // returns the index of the middle element - - // Ascending order - if (AscOrd) { - if (arr[middle] < target) - start = middle + 1; - else - end = middle - 1; - } - - // Descending order - else { - if (arr[middle] > target) - start = middle + 1; - else - end = middle - 1; - } - } - // Element is not present - return -1; - } -} +package com.thealgorithms.searches; + +// URL: https://www.geeksforgeeks.org/order-agnostic-binary-search/ + +/* Order Agnostic Binary Search is an algorithm where we do not know whether the given + sorted array is ascending or descending order. + We declare a boolean variable to find whether the array is ascending order. + In the while loop, we use the two pointer method (start and end) to get the middle element. + if the middle element is equal to our target element, then that is the answer. + If not, then we check if the array is ascending or descending order. + Depending upon the condition, respective statements will be executed and we will get our answer. + */ + +public final class OrderAgnosticBinarySearch { + private OrderAgnosticBinarySearch() { + } + + static int binSearchAlgo(int[] arr, int start, int end, int target) { + + // Checking whether the given array is ascending order + boolean ascOrd = arr[start] < arr[end]; + + while (start <= end) { + int middle = start + (end - start) / 2; + + // Check if the desired element is present at the middle position + if (arr[middle] == target) return middle; // returns the index of the middle element + + // Ascending order + if (ascOrd) { + if (arr[middle] < target) + start = middle + 1; + else + end = middle - 1; + } + + // Descending order + else { + if (arr[middle] > target) + start = middle + 1; + else + end = middle - 1; + } + } + // Element is not present + return -1; + } +} diff --git a/src/main/java/com/thealgorithms/searches/QuickSelect.java b/src/main/java/com/thealgorithms/searches/QuickSelect.java index 7d3e2e343961..97eab4bb4046 100644 --- a/src/main/java/com/thealgorithms/searches/QuickSelect.java +++ b/src/main/java/com/thealgorithms/searches/QuickSelect.java @@ -1,12 +1,17 @@ package com.thealgorithms.searches; -import java.util.*; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; /** * An implementation of the Quickselect algorithm as described * here. */ public final class QuickSelect { + private QuickSelect() { + } /** * Selects the {@code n}-th largest element of {@code list}, i.e. the element that would diff --git a/src/main/java/com/thealgorithms/searches/RabinKarpAlgorithm.java b/src/main/java/com/thealgorithms/searches/RabinKarpAlgorithm.java index e774546423f4..cc8387f6c4f3 100644 --- a/src/main/java/com/thealgorithms/searches/RabinKarpAlgorithm.java +++ b/src/main/java/com/thealgorithms/searches/RabinKarpAlgorithm.java @@ -6,8 +6,7 @@ public final class RabinKarpAlgorithm { private RabinKarpAlgorithm() { } - // d is the number of characters in the input alphabet - private static final int d = 256; + private static final int ALPHABET_SIZE = 256; public static int search(String pattern, String text, int primeNumber) { @@ -19,13 +18,13 @@ public static int search(String pattern, String text, int primeNumber) { int h = 1; // The value of h would be "pow(d, patternLength-1)%primeNumber" - for (int i = 0; i < patternLength - 1; i++) h = (h * d) % primeNumber; + for (int i = 0; i < patternLength - 1; i++) h = (h * ALPHABET_SIZE) % primeNumber; // Calculate the hash value of pattern and first // window of text for (int i = 0; i < patternLength; i++) { - hashForPattern = (d * hashForPattern + pattern.charAt(i)) % primeNumber; - hashForText = (d * hashForText + text.charAt(i)) % primeNumber; + hashForPattern = (ALPHABET_SIZE * hashForPattern + pattern.charAt(i)) % primeNumber; + hashForText = (ALPHABET_SIZE * hashForText + text.charAt(i)) % primeNumber; } // Slide the pattern over text one by one @@ -51,7 +50,7 @@ public static int search(String pattern, String text, int primeNumber) { // Calculate hash value for next window of text: Remove // leading digit, add trailing digit if (i < textLength - patternLength) { - hashForText = (d * (hashForText - text.charAt(i) * h) + text.charAt(i + patternLength)) % primeNumber; + hashForText = (ALPHABET_SIZE * (hashForText - text.charAt(i) * h) + text.charAt(i + patternLength)) % primeNumber; // handling negative hashForText if (hashForText < 0) hashForText = (hashForText + primeNumber); diff --git a/src/main/java/com/thealgorithms/searches/RecursiveBinarySearch.java b/src/main/java/com/thealgorithms/searches/RecursiveBinarySearch.java index 8860f3380e31..6c6284e28019 100644 --- a/src/main/java/com/thealgorithms/searches/RecursiveBinarySearch.java +++ b/src/main/java/com/thealgorithms/searches/RecursiveBinarySearch.java @@ -4,7 +4,7 @@ // Explanation:- https://www.tutorialspoint.com/java-program-for-binary-search-recursive package com.thealgorithms.searches; -import java.util.*; +import java.util.Scanner; // Create a SearchAlgorithm class with a generic type abstract class SearchAlgorithm> { diff --git a/src/main/java/com/thealgorithms/searches/SaddlebackSearch.java b/src/main/java/com/thealgorithms/searches/SaddlebackSearch.java index 4e5939d6b2b8..5c7a914e3bf2 100644 --- a/src/main/java/com/thealgorithms/searches/SaddlebackSearch.java +++ b/src/main/java/com/thealgorithms/searches/SaddlebackSearch.java @@ -16,7 +16,9 @@ * * @author Nishita Aggarwal */ -public class SaddlebackSearch { +public final class SaddlebackSearch { + private SaddlebackSearch() { + } /** * This method performs Saddleback Search @@ -55,7 +57,10 @@ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int[][] arr; - int i, j, rows = sc.nextInt(), col = sc.nextInt(); + int i; + int j; + int rows = sc.nextInt(); + int col = sc.nextInt(); arr = new int[rows][col]; for (i = 0; i < rows; i++) { for (j = 0; j < col; j++) { diff --git a/src/main/java/com/thealgorithms/searches/SquareRootBinarySearch.java b/src/main/java/com/thealgorithms/searches/SquareRootBinarySearch.java index afd5c194f7c4..c00bfc9da6f5 100644 --- a/src/main/java/com/thealgorithms/searches/SquareRootBinarySearch.java +++ b/src/main/java/com/thealgorithms/searches/SquareRootBinarySearch.java @@ -14,7 +14,9 @@ * * @author sahil */ -public class SquareRootBinarySearch { +public final class SquareRootBinarySearch { + private SquareRootBinarySearch() { + } /** * This is the driver method. diff --git a/src/main/java/com/thealgorithms/searches/UnionFind.java b/src/main/java/com/thealgorithms/searches/UnionFind.java index 4dfece0e6381..2effdf37bea5 100644 --- a/src/main/java/com/thealgorithms/searches/UnionFind.java +++ b/src/main/java/com/thealgorithms/searches/UnionFind.java @@ -1,11 +1,13 @@ package com.thealgorithms.searches; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class UnionFind { - private int[] p; - private int[] r; + private final int[] p; + private final int[] r; public UnionFind(int n) { p = new int[n]; @@ -23,7 +25,10 @@ public int find(int i) { return i; } - return p[i] = find(parent); + final int result = find(parent); + p[i] = result; + + return result; } public void union(int x, int y) { diff --git a/src/main/java/com/thealgorithms/searches/sortOrderAgnosticBinarySearch.java b/src/main/java/com/thealgorithms/searches/sortOrderAgnosticBinarySearch.java index 817d9b355450..acb9fb5cb3cd 100644 --- a/src/main/java/com/thealgorithms/searches/sortOrderAgnosticBinarySearch.java +++ b/src/main/java/com/thealgorithms/searches/sortOrderAgnosticBinarySearch.java @@ -1,5 +1,7 @@ package com.thealgorithms.searches; -public class sortOrderAgnosticBinarySearch { +public final class sortOrderAgnosticBinarySearch { + private sortOrderAgnosticBinarySearch() { + } public static int find(int[] arr, int key) { int start = 0; int end = arr.length - 1; diff --git a/src/main/java/com/thealgorithms/sorts/BinaryInsertionSort.java b/src/main/java/com/thealgorithms/sorts/BinaryInsertionSort.java index 1c2dce65c953..13076c617c76 100644 --- a/src/main/java/com/thealgorithms/sorts/BinaryInsertionSort.java +++ b/src/main/java/com/thealgorithms/sorts/BinaryInsertionSort.java @@ -10,7 +10,7 @@ public int[] binaryInsertSort(int[] array) { int high = i - 1; while (low <= high) { - int mid = (low + high) / 2; + final int mid = (low + high) >>> 1; if (temp < array[mid]) { high = mid - 1; } else { diff --git a/src/main/java/com/thealgorithms/sorts/BitonicSort.java b/src/main/java/com/thealgorithms/sorts/BitonicSort.java index 346d860508ca..b4b26299562f 100644 --- a/src/main/java/com/thealgorithms/sorts/BitonicSort.java +++ b/src/main/java/com/thealgorithms/sorts/BitonicSort.java @@ -55,8 +55,8 @@ void bitonicSort(int[] a, int low, int cnt, int dir) { /*Caller of bitonicSort for sorting the entire array of length N in ASCENDING order */ - void sort(int[] a, int N, int up) { - bitonicSort(a, 0, N, up); + void sort(int[] a, int n, int up) { + bitonicSort(a, 0, n, up); } /* A utility function to print array of size n */ diff --git a/src/main/java/com/thealgorithms/sorts/BogoSort.java b/src/main/java/com/thealgorithms/sorts/BogoSort.java index 75f1e84367c3..7a1f7b216437 100644 --- a/src/main/java/com/thealgorithms/sorts/BogoSort.java +++ b/src/main/java/com/thealgorithms/sorts/BogoSort.java @@ -8,7 +8,7 @@ */ public class BogoSort implements SortAlgorithm { - private static final Random random = new Random(); + private static final Random RANDOM = new Random(); private static > boolean isSorted(T[] array) { for (int i = 0; i < array.length - 1; i++) { @@ -24,7 +24,7 @@ private static void nextPermutation(T[] array) { int length = array.length; for (int i = 0; i < array.length; i++) { - int randomIndex = i + random.nextInt(length - i); + int randomIndex = i + RANDOM.nextInt(length - i); SortUtils.swap(array, randomIndex, i); } } diff --git a/src/main/java/com/thealgorithms/sorts/BubbleSort.java b/src/main/java/com/thealgorithms/sorts/BubbleSort.java index 46f30291d346..6823c68d0a74 100644 --- a/src/main/java/com/thealgorithms/sorts/BubbleSort.java +++ b/src/main/java/com/thealgorithms/sorts/BubbleSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * @author Varun Upadhyay (https://github.com/varunu28) * @author Podshivalov Nikita (https://github.com/nikitap492) @@ -21,8 +19,8 @@ public > T[] sort(T[] array) { for (int i = 1, size = array.length; i < size; ++i) { boolean swapped = false; for (int j = 0; j < size - i; ++j) { - if (greater(array[j], array[j + 1])) { - swap(array, j, j + 1); + if (SortUtils.greater(array[j], array[j + 1])) { + SortUtils.swap(array, j, j + 1); swapped = true; } } diff --git a/src/main/java/com/thealgorithms/sorts/BucketSort.java b/src/main/java/com/thealgorithms/sorts/BucketSort.java index 184e36f04db6..2a48cca0f433 100644 --- a/src/main/java/com/thealgorithms/sorts/BucketSort.java +++ b/src/main/java/com/thealgorithms/sorts/BucketSort.java @@ -8,7 +8,9 @@ /** * Wikipedia: https://en.wikipedia.org/wiki/Bucket_sort */ -public class BucketSort { +public final class BucketSort { + private BucketSort() { + } public static void main(String[] args) { int[] arr = new int[10]; diff --git a/src/main/java/com/thealgorithms/sorts/CircleSort.java b/src/main/java/com/thealgorithms/sorts/CircleSort.java index 74b3fc62125d..25c308b16e3c 100644 --- a/src/main/java/com/thealgorithms/sorts/CircleSort.java +++ b/src/main/java/com/thealgorithms/sorts/CircleSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - public class CircleSort implements SortAlgorithm { /* This method implements the circle sort @@ -10,8 +8,11 @@ public class CircleSort implements SortAlgorithm { @Override public > T[] sort(T[] array) { int n = array.length; - while (doSort(array, 0, n - 1)) - ; + if (n == 0) { + return array; + } + while (doSort(array, 0, n - 1)) { + } return array; } @@ -24,7 +25,7 @@ private > Boolean doSort(T[] array, int left, int right) boolean swapped = false; if (left == right) { - return false; + return Boolean.FALSE; } int low = left; @@ -32,7 +33,7 @@ private > Boolean doSort(T[] array, int left, int right) while (low < high) { if (array[low].compareTo(array[high]) > 0) { - swap(array, low, high); + SortUtils.swap(array, low, high); swapped = true; } low++; @@ -40,7 +41,7 @@ private > Boolean doSort(T[] array, int left, int right) } if (low == high && array[low].compareTo(array[high + 1]) > 0) { - swap(array, low, high + 1); + SortUtils.swap(array, low, high + 1); swapped = true; } @@ -50,21 +51,4 @@ private > Boolean doSort(T[] array, int left, int right) return swapped || leftHalf || rightHalf; } - - /* Driver code*/ - public static void main(String[] args) { - CircleSort CSort = new CircleSort(); - - Integer[] arr = {4, 23, 6, 78, 1, 54, 231, 9, 12}; - CSort.sort(arr); - for (int i = 0; i < arr.length - 1; ++i) { - assert arr[i] <= arr[i + 1]; - } - - String[] stringArray = {"c", "a", "e", "b", "d"}; - CSort.sort(stringArray); - for (int i = 0; i < stringArray.length - 1; ++i) { - assert arr[i].compareTo(arr[i + 1]) <= 0; - } - } } diff --git a/src/main/java/com/thealgorithms/sorts/CocktailShakerSort.java b/src/main/java/com/thealgorithms/sorts/CocktailShakerSort.java index dc3a9a100fa0..c88c7bd099f6 100644 --- a/src/main/java/com/thealgorithms/sorts/CocktailShakerSort.java +++ b/src/main/java/com/thealgorithms/sorts/CocktailShakerSort.java @@ -16,7 +16,8 @@ public > T[] sort(T[] array) { int length = array.length; int left = 0; int right = length - 1; - int swappedLeft, swappedRight; + int swappedLeft; + int swappedRight; while (left < right) { // front swappedRight = 0; diff --git a/src/main/java/com/thealgorithms/sorts/CombSort.java b/src/main/java/com/thealgorithms/sorts/CombSort.java index 2341ac652e83..edf09a2eb3f8 100644 --- a/src/main/java/com/thealgorithms/sorts/CombSort.java +++ b/src/main/java/com/thealgorithms/sorts/CombSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * Comb Sort algorithm implementation * @@ -52,9 +50,9 @@ public > T[] sort(T[] arr) { // Compare all elements with current gap for (int i = 0; i < size - gap; i++) { - if (less(arr[i + gap], arr[i])) { + if (SortUtils.less(arr[i + gap], arr[i])) { // Swap arr[i] and arr[i+gap] - swap(arr, i, i + gap); + SortUtils.swap(arr, i, i + gap); swapped = true; } } @@ -88,6 +86,6 @@ public static void main(String[] args) { ob.sort(arr); System.out.println("sorted array"); - print(arr); + SortUtils.print(arr); } } diff --git a/src/main/java/com/thealgorithms/sorts/CountingSort.java b/src/main/java/com/thealgorithms/sorts/CountingSort.java index 9a9b076b22e0..e83271d9ee67 100644 --- a/src/main/java/com/thealgorithms/sorts/CountingSort.java +++ b/src/main/java/com/thealgorithms/sorts/CountingSort.java @@ -4,7 +4,11 @@ import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toMap; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; import java.util.stream.IntStream; import java.util.stream.Stream; diff --git a/src/main/java/com/thealgorithms/sorts/DNFSort.java b/src/main/java/com/thealgorithms/sorts/DNFSort.java index 7e18b657973f..50ba8c89715b 100644 --- a/src/main/java/com/thealgorithms/sorts/DNFSort.java +++ b/src/main/java/com/thealgorithms/sorts/DNFSort.java @@ -1,13 +1,16 @@ package com.thealgorithms.sorts; -public class DNFSort { +public final class DNFSort { + private DNFSort() { + } // Sort the input array, the array is assumed to // have values in {0, 1, 2} - static void sort012(int[] a, int arr_size) { + static void sort012(int[] a, int arrSize) { int low = 0; - int high = arr_size - 1; - int mid = 0, temp = 0; + int high = arrSize - 1; + int mid = 0; + int temp; while (mid <= high) { switch (a[mid]) { case 0: { @@ -28,24 +31,26 @@ static void sort012(int[] a, int arr_size) { high--; break; } + default: + throw new IllegalArgumentException("Unexpected value: " + a[mid]); } } } /* Utility function to print array arr[] */ - static void printArray(int[] arr, int arr_size) { - for (int i = 0; i < arr_size; i++) { + static void printArray(int[] arr, int arrSize) { + for (int i = 0; i < arrSize; i++) { System.out.print(arr[i] + " "); } - System.out.println(""); + System.out.println(); } /*Driver function to check for above functions*/ public static void main(String[] args) { int[] arr = {0, 1, 1, 0, 1, 2, 1, 2, 0, 0, 0, 1}; - int arr_size = arr.length; - sort012(arr, arr_size); + int arrSize = arr.length; + sort012(arr, arrSize); System.out.println("Array after seggregation "); - printArray(arr, arr_size); + printArray(arr, arrSize); } } diff --git a/src/main/java/com/thealgorithms/sorts/DutchNationalFlagSort.java b/src/main/java/com/thealgorithms/sorts/DutchNationalFlagSort.java index 7a3cdfa317f6..20b8f0ba1abc 100644 --- a/src/main/java/com/thealgorithms/sorts/DutchNationalFlagSort.java +++ b/src/main/java/com/thealgorithms/sorts/DutchNationalFlagSort.java @@ -13,14 +13,14 @@ public class DutchNationalFlagSort implements SortAlgorithm { @Override public > T[] sort(T[] unsorted) { - return dutch_national_flag_sort(unsorted, unsorted[(int) Math.ceil((unsorted.length) / 2.0) - 1]); + return dutchNationalFlagSort(unsorted, unsorted[(int) Math.ceil((unsorted.length) / 2.0) - 1]); } public > T[] sort(T[] unsorted, T intendedMiddle) { - return dutch_national_flag_sort(unsorted, intendedMiddle); + return dutchNationalFlagSort(unsorted, intendedMiddle); } - private > T[] dutch_national_flag_sort(T[] arr, T intendedMiddle) { + private > T[] dutchNationalFlagSort(T[] arr, T intendedMiddle) { int i = 0; int j = 0; int k = arr.length - 1; diff --git a/src/main/java/com/thealgorithms/sorts/GnomeSort.java b/src/main/java/com/thealgorithms/sorts/GnomeSort.java index 33a13d5bb2d4..9bef6a2837b5 100644 --- a/src/main/java/com/thealgorithms/sorts/GnomeSort.java +++ b/src/main/java/com/thealgorithms/sorts/GnomeSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * Implementation of gnome sort * @@ -15,10 +13,10 @@ public > T[] sort(T[] arr) { int i = 1; int j = 2; while (i < arr.length) { - if (less(arr[i - 1], arr[i])) { + if (SortUtils.less(arr[i - 1], arr[i])) { i = j++; } else { - swap(arr, i - 1, i); + SortUtils.swap(arr, i - 1, i); if (--i == 0) { i = j++; } @@ -67,7 +65,7 @@ public static void main(String[] args) { gnomeSort.sort(strings); System.out.println("After sort : "); - print(integers); - print(strings); + SortUtils.print(integers); + SortUtils.print(strings); } } diff --git a/src/main/java/com/thealgorithms/sorts/InsertionSort.java b/src/main/java/com/thealgorithms/sorts/InsertionSort.java index cd160866ae15..3b8c286515bc 100644 --- a/src/main/java/com/thealgorithms/sorts/InsertionSort.java +++ b/src/main/java/com/thealgorithms/sorts/InsertionSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - import java.util.function.Function; class InsertionSort implements SortAlgorithm { @@ -20,8 +18,8 @@ public > T[] sort(T[] array) { public > T[] sort(T[] array, int lo, int hi) { for (int i = lo; i < hi; i++) { - for (int j = i; j > lo && less(array[j], array[j - 1]); j--) { - swap(array, j, j - 1); + for (int j = i; j > lo && SortUtils.less(array[j], array[j - 1]); j--) { + SortUtils.swap(array, j, j - 1); } } return array; @@ -45,13 +43,13 @@ public > T[] sentinelSort(T[] array) { // put the smallest element to the 0 position as a sentinel, which will allow us to avoid // redundant comparisons like `j > 0` further for (int i = 1; i < n; i++) - if (less(array[i], array[minElemIndex])) minElemIndex = i; - swap(array, 0, minElemIndex); + if (SortUtils.less(array[i], array[minElemIndex])) minElemIndex = i; + SortUtils.swap(array, 0, minElemIndex); for (int i = 2; i < n; i++) { int j = i; T currentValue = array[i]; - while (less(currentValue, array[j - 1])) { + while (SortUtils.less(currentValue, array[j - 1])) { array[j] = array[j - 1]; j--; } @@ -73,13 +71,13 @@ public static void main(String[] args) { InsertionSort insertionSort = new InsertionSort(); double insertionTime = measureApproxExecTime(insertionSort::sort, randomArray); - System.out.printf("Original insertion time: %5.2f sec.\n", insertionTime); + System.out.printf("Original insertion time: %5.2f sec.%n", insertionTime); double insertionSentinelTime = measureApproxExecTime(insertionSort::sentinelSort, copyRandomArray); - System.out.printf("Sentinel insertion time: %5.2f sec.\n", insertionSentinelTime); + System.out.printf("Sentinel insertion time: %5.2f sec.%n", insertionSentinelTime); // ~ 1.5 time sentinel sort is faster, then classical Insertion sort implementation. - System.out.printf("Sentinel insertion is %f3.2 time faster than Original insertion sort\n", insertionTime / insertionSentinelTime); + System.out.printf("Sentinel insertion is %f3.2 time faster than Original insertion sort%n", insertionTime / insertionSentinelTime); } private static double measureApproxExecTime(Function sortAlgorithm, Double[] randomArray) { diff --git a/src/main/java/com/thealgorithms/sorts/LinkListSort.java b/src/main/java/com/thealgorithms/sorts/LinkListSort.java index e679fa9f03e7..fdbfe3130e41 100644 --- a/src/main/java/com/thealgorithms/sorts/LinkListSort.java +++ b/src/main/java/com/thealgorithms/sorts/LinkListSort.java @@ -7,13 +7,11 @@ package com.thealgorithms.sorts; -import java.util.*; +import java.util.Arrays; public class LinkListSort { public static boolean isSorted(int[] p, int option) { - try (Scanner sc = new Scanner(System.in)) { - } int[] a = p; // Array is taken as input from test class int[] b = p; @@ -24,7 +22,10 @@ public static boolean isSorted(int[] p, int option) { switch (ch) { case 1: Task nm = new Task(); - Node start = null, prev = null, fresh, ptr; + Node start = null; + Node prev = null; + Node fresh; + Node ptr; for (int i = 0; i < a.length; i++) { // New nodes are created and values are added fresh = new Node(); // Node class is called @@ -49,7 +50,10 @@ public static boolean isSorted(int[] p, int option) { // The given array and the expected array is checked if both are same then true // is displayed else false is displayed case 2: - Node start1 = null, prev1 = null, fresh1, ptr1; + Node start1 = null; + Node prev1 = null; + Node fresh1; + Node ptr1; for (int i1 = 0; i1 < a.length; i1++) { // New nodes are created and values are added fresh1 = new Node(); // New node is created @@ -75,7 +79,10 @@ public static boolean isSorted(int[] p, int option) { // is displayed else false is displayed case 3: Task2 mm = new Task2(); - Node start2 = null, prev2 = null, fresh2, ptr2; + Node start2 = null; + Node prev2 = null; + Node fresh2; + Node ptr2; for (int i2 = 0; i2 < a.length; i2++) { // New nodes are created and values are added fresh2 = new Node(); // Node class is created @@ -137,7 +144,7 @@ class Node { class Task { - static int[] a; + private int[] a; public Node sortByMergeSort(Node head) { if (head == null || head.next == null) return head; @@ -181,7 +188,9 @@ void task(int[] n, int i, int j) { } void task1(int[] n, int s, int m, int e) { - int i = s, k = 0, j = m + 1; + int i = s; + int k = 0; + int j = m + 1; int[] b = new int[e - s + 1]; while (i <= m && j <= e) { if (n[j] >= n[i]) @@ -245,7 +254,7 @@ static int count(Node head) { class Task2 { - static int[] a; + private int[] a; public Node sortByHeapSort(Node head) { if (head == null || head.next == null) return head; diff --git a/src/main/java/com/thealgorithms/sorts/MergeSort.java b/src/main/java/com/thealgorithms/sorts/MergeSort.java index 0950b46891ce..9949783ca21b 100644 --- a/src/main/java/com/thealgorithms/sorts/MergeSort.java +++ b/src/main/java/com/thealgorithms/sorts/MergeSort.java @@ -9,7 +9,7 @@ */ class MergeSort implements SortAlgorithm { - @SuppressWarnings("rawtypes") private static Comparable[] aux; + private Comparable[] aux; /** * Generic merge sort algorithm implements. @@ -30,7 +30,7 @@ public > T[] sort(T[] unsorted) { * @param left the first index of the array. * @param right the last index of the array. */ - private static > void doSort(T[] arr, int left, int right) { + private > void doSort(T[] arr, int left, int right) { if (left < right) { int mid = (left + right) >>> 1; doSort(arr, left, mid); @@ -49,8 +49,9 @@ private static > void doSort(T[] arr, int left, int righ * increasing order. */ @SuppressWarnings("unchecked") - private static > void merge(T[] arr, int left, int mid, int right) { - int i = left, j = mid + 1; + private > void merge(T[] arr, int left, int mid, int right) { + int i = left; + int j = mid + 1; System.arraycopy(arr, left, aux, left, right + 1 - left); for (int k = left; k <= right; k++) { diff --git a/src/main/java/com/thealgorithms/sorts/MergeSortNoExtraSpace.java b/src/main/java/com/thealgorithms/sorts/MergeSortNoExtraSpace.java index b9551523bb8d..290c2df59c3d 100644 --- a/src/main/java/com/thealgorithms/sorts/MergeSortNoExtraSpace.java +++ b/src/main/java/com/thealgorithms/sorts/MergeSortNoExtraSpace.java @@ -1,28 +1,30 @@ package com.thealgorithms.sorts; -import java.util.*; import java.util.Arrays; +import java.util.Scanner; /*This code implements the mergeSort algorithm without extra space For understanding about mergesort visit :https://www.geeksforgeeks.org/merge-sort/ */ -public class MergeSortNoExtraSpace { +public final class MergeSortNoExtraSpace { + private MergeSortNoExtraSpace() { + } - public static void call_merge_sort(int[] a, int n) { + public static void callMergeSort(int[] a, int n) { int maxele = Arrays.stream(a).max().getAsInt() + 1; - merge_sort(a, 0, n - 1, maxele); + mergeSort(a, 0, n - 1, maxele); } - public static void merge_sort(int[] a, int start, int end, int maxele) { // this function divides the array into 2 halves + public static void mergeSort(int[] a, int start, int end, int maxele) { // this function divides the array into 2 halves if (start < end) { int mid = (start + end) / 2; - merge_sort(a, start, mid, maxele); - merge_sort(a, mid + 1, end, maxele); - implement_merge_sort(a, start, mid, end, maxele); + mergeSort(a, start, mid, maxele); + mergeSort(a, mid + 1, end, maxele); + implementMergeSort(a, start, mid, end, maxele); } } - public static void implement_merge_sort(int[] a, int start, int mid, int end, + public static void implementMergeSort(int[] a, int start, int mid, int end, int maxele) { // implementation of mergesort int i = start; int j = mid + 1; @@ -62,7 +64,7 @@ public static void main(String[] args) { for (int i = 0; i < n; i++) { a[i] = inp.nextInt(); } - call_merge_sort(a, n); + callMergeSort(a, n); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } diff --git a/src/main/java/com/thealgorithms/sorts/MergeSortRecursive.java b/src/main/java/com/thealgorithms/sorts/MergeSortRecursive.java index f9d12a2aae38..f67ba631be0e 100644 --- a/src/main/java/com/thealgorithms/sorts/MergeSortRecursive.java +++ b/src/main/java/com/thealgorithms/sorts/MergeSortRecursive.java @@ -1,7 +1,6 @@ package com.thealgorithms.sorts; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class MergeSortRecursive { @@ -59,11 +58,3 @@ private static List sort(List unsortedA, List unsorte } } } - -class App { - - public static void main(String[] args) { - MergeSortRecursive sort = new MergeSortRecursive(new ArrayList<>(Arrays.asList(4, 3, 1, 8, 5, 10, 0, 1, 4, 11, 8, 9))); - sort.mergeSort(); - } -} diff --git a/src/main/java/com/thealgorithms/sorts/OddEvenSort.java b/src/main/java/com/thealgorithms/sorts/OddEvenSort.java index b5213792d12d..fb6e4d2649cb 100644 --- a/src/main/java/com/thealgorithms/sorts/OddEvenSort.java +++ b/src/main/java/com/thealgorithms/sorts/OddEvenSort.java @@ -3,7 +3,9 @@ import java.util.Random; // https://en.wikipedia.org/wiki/Odd%E2%80%93even_sort -public class OddEvenSort { +public final class OddEvenSort { + private OddEvenSort() { + } public static void main(String[] args) { int[] arr = new int[100]; diff --git a/src/main/java/com/thealgorithms/sorts/PancakeSort.java b/src/main/java/com/thealgorithms/sorts/PancakeSort.java index c5e59a0215b7..cd3e89307238 100644 --- a/src/main/java/com/thealgorithms/sorts/PancakeSort.java +++ b/src/main/java/com/thealgorithms/sorts/PancakeSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * Implementation of pancake sort * @@ -18,12 +16,12 @@ public > T[] sort(T[] array) { T max = array[0]; int index = 0; for (int j = 0; j < size - i; j++) { - if (less(max, array[j])) { + if (SortUtils.less(max, array[j])) { max = array[j]; index = j; } } - flip(array, index, array.length - 1 - i); + SortUtils.flip(array, index, array.length - 1 - i); } return array; } @@ -62,6 +60,6 @@ public static void main(String[] args) { PancakeSort pancakeSort = new PancakeSort(); System.out.println("After sorting:"); pancakeSort.sort(arr); - print(arr); + SortUtils.print(arr); } } diff --git a/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java b/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java index cd399fb701cb..9c0ab45b6a3c 100644 --- a/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java +++ b/src/main/java/com/thealgorithms/sorts/PigeonholeSort.java @@ -1,8 +1,6 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - -import java.util.*; +import java.util.ArrayList; public class PigeonholeSort { @@ -42,7 +40,7 @@ public static void main(String[] args) { Integer[] arr = {8, 3, 2, 7, 4, 6, 8}; System.out.print("Unsorted order is : "); - print(arr); + SortUtils.print(arr); pigeonholeSort.sort(arr); @@ -50,6 +48,6 @@ public static void main(String[] args) { for (int i = 0; i < arr.length; i++) { assert (arr[i]) <= (arr[i + 1]); } - print(arr); + SortUtils.print(arr); } } diff --git a/src/main/java/com/thealgorithms/sorts/QuickSort.java b/src/main/java/com/thealgorithms/sorts/QuickSort.java index 2842b08a975c..3ebdd96ce938 100644 --- a/src/main/java/com/thealgorithms/sorts/QuickSort.java +++ b/src/main/java/com/thealgorithms/sorts/QuickSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * @author Varun Upadhyay (https://github.com/varunu28) * @author Podshivalov Nikita (https://github.com/nikitap492) @@ -45,7 +43,7 @@ private static > void doSort(T[] array, int left, int ri */ private static > int randomPartition(T[] array, int left, int right) { int randomIndex = left + (int) (Math.random() * (right - left + 1)); - swap(array, randomIndex, right); + SortUtils.swap(array, randomIndex, right); return partition(array, left, right); } @@ -62,14 +60,14 @@ private static > int partition(T[] array, int left, int T pivot = array[mid]; while (left <= right) { - while (less(array[left], pivot)) { + while (SortUtils.less(array[left], pivot)) { ++left; } - while (less(pivot, array[right])) { + while (SortUtils.less(pivot, array[right])) { --right; } if (left <= right) { - swap(array, left, right); + SortUtils.swap(array, left, right); ++left; --right; } diff --git a/src/main/java/com/thealgorithms/sorts/RadixSort.java b/src/main/java/com/thealgorithms/sorts/RadixSort.java index d2090bf86646..a87097bf6e9d 100644 --- a/src/main/java/com/thealgorithms/sorts/RadixSort.java +++ b/src/main/java/com/thealgorithms/sorts/RadixSort.java @@ -2,7 +2,9 @@ import java.util.Arrays; -class RadixSort { +final class RadixSort { + private RadixSort() { + } private static int getMax(int[] arr, int n) { int mx = arr[0]; @@ -33,9 +35,7 @@ private static void countSort(int[] arr, int n, int exp) { count[(arr[i] / exp) % 10]--; } - for (i = 0; i < n; i++) { - arr[i] = output[i]; - } + System.arraycopy(output, 0, arr, 0, n); } private static void radixsort(int[] arr, int n) { diff --git a/src/main/java/com/thealgorithms/sorts/ShellSort.java b/src/main/java/com/thealgorithms/sorts/ShellSort.java index 5f41a5440388..37a50e855698 100644 --- a/src/main/java/com/thealgorithms/sorts/ShellSort.java +++ b/src/main/java/com/thealgorithms/sorts/ShellSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - public class ShellSort implements SortAlgorithm { /** @@ -25,7 +23,7 @@ public > T[] sort(T[] array) { for (int i = gap; i < length; i++) { int j; T temp = array[i]; - for (j = i; j >= gap && less(temp, array[j - gap]); j -= gap) { + for (j = i; j >= gap && SortUtils.less(temp, array[j - gap]); j -= gap) { array[j] = array[j - gap]; } array[j] = temp; @@ -43,6 +41,6 @@ public static void main(String[] args) { for (int i = 0; i < toSort.length - 1; ++i) { assert toSort[i] <= toSort[i + 1]; } - print(toSort); + SortUtils.print(toSort); } } diff --git a/src/main/java/com/thealgorithms/sorts/SimpleSort.java b/src/main/java/com/thealgorithms/sorts/SimpleSort.java index 138ebb62937d..7aab7c784b92 100644 --- a/src/main/java/com/thealgorithms/sorts/SimpleSort.java +++ b/src/main/java/com/thealgorithms/sorts/SimpleSort.java @@ -1,16 +1,14 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - public class SimpleSort implements SortAlgorithm { @Override public > T[] sort(T[] array) { - final int LENGTH = array.length; + final int length = array.length; - for (int i = 0; i < LENGTH; i++) { - for (int j = i + 1; j < LENGTH; j++) { - if (less(array[j], array[i])) { + for (int i = 0; i < length; i++) { + for (int j = i + 1; j < length; j++) { + if (SortUtils.less(array[j], array[i])) { T element = array[j]; array[j] = array[i]; array[i] = element; @@ -25,12 +23,12 @@ public static void main(String[] args) { // ==== Int ======= Integer[] a = {3, 7, 45, 1, 33, 5, 2, 9}; System.out.print("unsorted: "); - print(a); + SortUtils.print(a); System.out.println(); new SimpleSort().sort(a); System.out.print("sorted: "); - print(a); + SortUtils.print(a); System.out.println(); // ==== String ======= @@ -45,11 +43,11 @@ public static void main(String[] args) { "pineapple", }; System.out.print("unsorted: "); - print(b); + SortUtils.print(b); System.out.println(); new SimpleSort().sort(b); System.out.print("sorted: "); - print(b); + SortUtils.print(b); } } diff --git a/src/main/java/com/thealgorithms/sorts/SlowSort.java b/src/main/java/com/thealgorithms/sorts/SlowSort.java index 1ab8ceea4fdf..dcd426b31c0d 100644 --- a/src/main/java/com/thealgorithms/sorts/SlowSort.java +++ b/src/main/java/com/thealgorithms/sorts/SlowSort.java @@ -16,7 +16,7 @@ private > void sort(T[] array, int i, int j) { if (SortUtils.greaterOrEqual(i, j)) { return; } - int m = (i + j) / 2; + final int m = (i + j) >>> 1; sort(array, i, m); sort(array, m + 1, j); if (SortUtils.less(array[j], array[m])) { diff --git a/src/main/java/com/thealgorithms/sorts/SortUtils.java b/src/main/java/com/thealgorithms/sorts/SortUtils.java index 9e114b2084fc..fda1975189ec 100644 --- a/src/main/java/com/thealgorithms/sorts/SortUtils.java +++ b/src/main/java/com/thealgorithms/sorts/SortUtils.java @@ -5,6 +5,8 @@ import java.util.stream.Collectors; final class SortUtils { + private SortUtils() { + } /** * Swaps two elements at the given positions in an array. diff --git a/src/main/java/com/thealgorithms/sorts/SortUtilsRandomGenerator.java b/src/main/java/com/thealgorithms/sorts/SortUtilsRandomGenerator.java index e75b8e1e6f04..b048d0245b64 100644 --- a/src/main/java/com/thealgorithms/sorts/SortUtilsRandomGenerator.java +++ b/src/main/java/com/thealgorithms/sorts/SortUtilsRandomGenerator.java @@ -2,14 +2,16 @@ import java.util.Random; -public class SortUtilsRandomGenerator { +public final class SortUtilsRandomGenerator { + private SortUtilsRandomGenerator() { + } - private static final Random random; - private static final long seed; + private static final Random RANDOM; + private static final long SEED; static { - seed = System.currentTimeMillis(); - random = new Random(seed); + SEED = System.currentTimeMillis(); + RANDOM = new Random(SEED); } /** @@ -30,7 +32,7 @@ public static Double[] generateArray(int size) { * @return Double value [0, 1) */ public static Double generateDouble() { - return random.nextDouble(); + return RANDOM.nextDouble(); } /** @@ -39,6 +41,6 @@ public static Double generateDouble() { * @return int value [0, n) */ public static int generateInt(int n) { - return random.nextInt(n); + return RANDOM.nextInt(n); } } diff --git a/src/main/java/com/thealgorithms/sorts/StrandSort.java b/src/main/java/com/thealgorithms/sorts/StrandSort.java index 2d8411faca4f..7e2251d70640 100644 --- a/src/main/java/com/thealgorithms/sorts/StrandSort.java +++ b/src/main/java/com/thealgorithms/sorts/StrandSort.java @@ -3,7 +3,9 @@ import java.util.Iterator; import java.util.LinkedList; -public class StrandSort { +public final class StrandSort { + private StrandSort() { + } // note: the input list is destroyed public static > LinkedList strandSort(LinkedList list) { diff --git a/src/main/java/com/thealgorithms/sorts/SwapSort.java b/src/main/java/com/thealgorithms/sorts/SwapSort.java index a626e511bb10..08ce988578f3 100644 --- a/src/main/java/com/thealgorithms/sorts/SwapSort.java +++ b/src/main/java/com/thealgorithms/sorts/SwapSort.java @@ -1,7 +1,5 @@ package com.thealgorithms.sorts; -import static com.thealgorithms.sorts.SortUtils.*; - /** * The idea of Swap-Sort is to count the number m of smaller values (that are in * A) from each element of an array A(1...n) and then swap the element with the @@ -13,10 +11,10 @@ public class SwapSort implements SortAlgorithm { @Override public > T[] sort(T[] array) { - int LENGTH = array.length; + int len = array.length; int index = 0; - while (index < LENGTH - 1) { + while (index < len - 1) { int amountSmallerElements = this.getSmallerElementCount(array, index); if (amountSmallerElements > 0 && index != amountSmallerElements) { @@ -34,7 +32,7 @@ public > T[] sort(T[] array) { private > int getSmallerElementCount(T[] array, int index) { int counter = 0; for (int i = 0; i < array.length; i++) { - if (less(array[i], array[index])) { + if (SortUtils.less(array[i], array[index])) { counter++; } } @@ -46,12 +44,12 @@ public static void main(String[] args) { // ==== Int ======= Integer[] a = {3, 7, 45, 1, 33, 5, 2, 9}; System.out.print("unsorted: "); - print(a); + SortUtils.print(a); System.out.println(); new SwapSort().sort(a); System.out.print("sorted: "); - print(a); + SortUtils.print(a); System.out.println(); // ==== String ======= @@ -66,11 +64,11 @@ public static void main(String[] args) { "pineapple", }; System.out.print("unsorted: "); - print(b); + SortUtils.print(b); System.out.println(); new SwapSort().sort(b); System.out.print("sorted: "); - print(b); + SortUtils.print(b); } } diff --git a/src/main/java/com/thealgorithms/sorts/TimSort.java b/src/main/java/com/thealgorithms/sorts/TimSort.java index be7eaa275c91..85e16636c6ae 100644 --- a/src/main/java/com/thealgorithms/sorts/TimSort.java +++ b/src/main/java/com/thealgorithms/sorts/TimSort.java @@ -9,7 +9,7 @@ */ class TimSort implements SortAlgorithm { private static final int SUB_ARRAY_SIZE = 32; - @SuppressWarnings("rawtypes") private static Comparable[] aux; + private Comparable[] aux; @Override public > T[] sort(T[] a) { @@ -30,9 +30,9 @@ public > T[] sort(T[] a) { return a; } - @SuppressWarnings("unchecked") - private static > void merge(T[] a, int lo, int mid, int hi) { - int i = lo, j = mid + 1; + private > void merge(T[] a, int lo, int mid, int hi) { + int i = lo; + int j = mid + 1; System.arraycopy(a, lo, aux, lo, hi + 1 - lo); for (int k = lo; k <= hi; k++) { diff --git a/src/main/java/com/thealgorithms/sorts/TopologicalSort.java b/src/main/java/com/thealgorithms/sorts/TopologicalSort.java index 76d527ce756d..dd3a763bb197 100644 --- a/src/main/java/com/thealgorithms/sorts/TopologicalSort.java +++ b/src/main/java/com/thealgorithms/sorts/TopologicalSort.java @@ -1,6 +1,10 @@ package com.thealgorithms.sorts; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedList; /** * The Topological Sorting algorithm linearly orders a DAG or Directed Acyclic Graph into @@ -12,7 +16,9 @@ * @author Jonathan Taylor (https://github.com/Jtmonument) * Based on Introduction to Algorithms 3rd Edition */ -public class TopologicalSort { +public final class TopologicalSort { + private TopologicalSort() { + } /* * Enum to represent the colors for the depth first search @@ -43,7 +49,7 @@ private static class Vertex { * */ public final ArrayList next = new ArrayList<>(); - public Vertex(String label) { + Vertex(String label) { this.label = label; } } @@ -67,13 +73,6 @@ public void addEdge(String label, String... next) { } } - static class BackEdgeException extends RuntimeException { - - public BackEdgeException(String backEdge) { - super("This graph contains a cycle. No linear ordering is possible. " + backEdge); - } - } - /* * Depth First Search * @@ -125,7 +124,7 @@ private static String sort(Graph graph, Vertex u, LinkedList list) { * * In many cases, we will not know u.f, but v.color denotes the type of edge * */ - throw new BackEdgeException("Back edge: " + u.label + " -> " + label); + throw new RuntimeException("This graph contains a cycle. No linear ordering is possible. Back edge: " + u.label + " -> " + label); } }); u.color = Color.BLACK; diff --git a/src/main/java/com/thealgorithms/stacks/BalancedBrackets.java b/src/main/java/com/thealgorithms/stacks/BalancedBrackets.java index a73697a7df21..a8f5254b22c5 100644 --- a/src/main/java/com/thealgorithms/stacks/BalancedBrackets.java +++ b/src/main/java/com/thealgorithms/stacks/BalancedBrackets.java @@ -16,7 +16,9 @@ * @author khalil2535 * @author shellhub */ -class BalancedBrackets { +final class BalancedBrackets { + private BalancedBrackets() { + } /** * Check if {@code leftBracket} and {@code rightBracket} is paired or not diff --git a/src/main/java/com/thealgorithms/stacks/DecimalToAnyUsingStack.java b/src/main/java/com/thealgorithms/stacks/DecimalToAnyUsingStack.java index 0a206a8ba1e9..41d1c6408ee5 100644 --- a/src/main/java/com/thealgorithms/stacks/DecimalToAnyUsingStack.java +++ b/src/main/java/com/thealgorithms/stacks/DecimalToAnyUsingStack.java @@ -2,7 +2,9 @@ import java.util.Stack; -public class DecimalToAnyUsingStack { +public final class DecimalToAnyUsingStack { + private DecimalToAnyUsingStack() { + } public static void main(String[] args) { assert convert(0, 2).equals("0"); diff --git a/src/main/java/com/thealgorithms/stacks/DuplicateBrackets.java b/src/main/java/com/thealgorithms/stacks/DuplicateBrackets.java index 7daf2e060e22..2fb03de77de5 100644 --- a/src/main/java/com/thealgorithms/stacks/DuplicateBrackets.java +++ b/src/main/java/com/thealgorithms/stacks/DuplicateBrackets.java @@ -8,9 +8,12 @@ // e.g.' // ((a + b) + (c + d)) -> false // (a + b) + ((c + d)) -> true -import java.util.*; +import java.util.Scanner; +import java.util.Stack; -public class DuplicateBrackets { +public final class DuplicateBrackets { + private DuplicateBrackets() { + } public static boolean check(String str) { Stack st = new Stack<>(); diff --git a/src/main/java/com/thealgorithms/stacks/InfixToPostfix.java b/src/main/java/com/thealgorithms/stacks/InfixToPostfix.java index 2cafdc940650..e3519978c6e5 100644 --- a/src/main/java/com/thealgorithms/stacks/InfixToPostfix.java +++ b/src/main/java/com/thealgorithms/stacks/InfixToPostfix.java @@ -2,7 +2,9 @@ import java.util.Stack; -public class InfixToPostfix { +public final class InfixToPostfix { + private InfixToPostfix() { + } public static void main(String[] args) throws Exception { assert "32+".equals(infix2PostFix("3+2")); diff --git a/src/main/java/com/thealgorithms/stacks/LargestRectangle.java b/src/main/java/com/thealgorithms/stacks/LargestRectangle.java index 63f1d0b4f30d..0404d9c99508 100644 --- a/src/main/java/com/thealgorithms/stacks/LargestRectangle.java +++ b/src/main/java/com/thealgorithms/stacks/LargestRectangle.java @@ -7,10 +7,13 @@ * @author mohd rameez github.com/rameez471 */ -public class LargestRectangle { +public final class LargestRectangle { + private LargestRectangle() { + } public static String largestRectanglehistogram(int[] heights) { - int n = heights.length, maxArea = 0; + int n = heights.length; + int maxArea = 0; Stack st = new Stack<>(); for (int i = 0; i < n; i++) { int start = i; diff --git a/src/main/java/com/thealgorithms/stacks/MaximumMinimumWindow.java b/src/main/java/com/thealgorithms/stacks/MaximumMinimumWindow.java index 5eb895d945e5..d76122b16632 100644 --- a/src/main/java/com/thealgorithms/stacks/MaximumMinimumWindow.java +++ b/src/main/java/com/thealgorithms/stacks/MaximumMinimumWindow.java @@ -27,7 +27,9 @@ * * @author sahil */ -public class MaximumMinimumWindow { +public final class MaximumMinimumWindow { + private MaximumMinimumWindow() { + } /** * This function contains the logic of finding maximum of minimum for every diff --git a/src/main/java/com/thealgorithms/stacks/NextGreaterElement.java b/src/main/java/com/thealgorithms/stacks/NextGreaterElement.java index d681e41fbfc3..f7cbea714eb0 100644 --- a/src/main/java/com/thealgorithms/stacks/NextGreaterElement.java +++ b/src/main/java/com/thealgorithms/stacks/NextGreaterElement.java @@ -41,7 +41,9 @@ Next greater element between (6 to n) is -1 -1. */ -public class NextGreaterElement { +public final class NextGreaterElement { + private NextGreaterElement() { + } public static int[] findNextGreaterElements(int[] array) { if (array == null) { diff --git a/src/main/java/com/thealgorithms/stacks/NextSmallerElement.java b/src/main/java/com/thealgorithms/stacks/NextSmallerElement.java index 84263d986508..4d37da0e7c31 100644 --- a/src/main/java/com/thealgorithms/stacks/NextSmallerElement.java +++ b/src/main/java/com/thealgorithms/stacks/NextSmallerElement.java @@ -37,7 +37,9 @@ Next smaller element between (0 , 5) is 6 answer is -1 */ -public class NextSmallerElement { +public final class NextSmallerElement { + private NextSmallerElement() { + } public static int[] findNextSmallerElements(int[] array) { // base case diff --git a/src/main/java/com/thealgorithms/stacks/PostfixToInfix.java b/src/main/java/com/thealgorithms/stacks/PostfixToInfix.java index 0c674ec02a1e..c69a511c2c17 100644 --- a/src/main/java/com/thealgorithms/stacks/PostfixToInfix.java +++ b/src/main/java/com/thealgorithms/stacks/PostfixToInfix.java @@ -16,7 +16,9 @@ * */ -public class PostfixToInfix { +public final class PostfixToInfix { + private PostfixToInfix() { + } public static boolean isOperator(char token) { switch (token) { @@ -26,9 +28,9 @@ public static boolean isOperator(char token) { case '*': case '^': return true; + default: + return false; } - - return false; } public static boolean isValidPostfixExpression(String postfix) { @@ -88,7 +90,8 @@ public static String getPostfixToInfix(String postfix) { Stack stack = new Stack<>(); StringBuilder valueString = new StringBuilder(); - String operandA, operandB; + String operandA; + String operandB; char operator; for (int index = 0; index < postfix.length(); index++) { diff --git a/src/main/java/com/thealgorithms/strings/Alphabetical.java b/src/main/java/com/thealgorithms/strings/Alphabetical.java index fde17c883917..de07dde2d510 100644 --- a/src/main/java/com/thealgorithms/strings/Alphabetical.java +++ b/src/main/java/com/thealgorithms/strings/Alphabetical.java @@ -5,7 +5,9 @@ * based on the position of the characters in the conventional ordering of an * alphabet. Wikipedia: https://en.wikipedia.org/wiki/Alphabetical_order */ -class Alphabetical { +final class Alphabetical { + private Alphabetical() { + } public static void main(String[] args) { assert !isAlphabetical("123abc"); diff --git a/src/main/java/com/thealgorithms/strings/CharactersSame.java b/src/main/java/com/thealgorithms/strings/CharactersSame.java index e0243fa8edef..78ccbbea4898 100644 --- a/src/main/java/com/thealgorithms/strings/CharactersSame.java +++ b/src/main/java/com/thealgorithms/strings/CharactersSame.java @@ -1,6 +1,8 @@ package com.thealgorithms.strings; -public class CharactersSame { +public final class CharactersSame { + private CharactersSame() { + } /** * Driver Code diff --git a/src/main/java/com/thealgorithms/strings/CheckAnagrams.java b/src/main/java/com/thealgorithms/strings/CheckAnagrams.java index a20e8b4ad418..7bf7cd9a7c66 100644 --- a/src/main/java/com/thealgorithms/strings/CheckAnagrams.java +++ b/src/main/java/com/thealgorithms/strings/CheckAnagrams.java @@ -7,7 +7,9 @@ * Two strings are anagrams if they are made of the same letters arranged * differently (ignoring the case). */ -public class CheckAnagrams { +public final class CheckAnagrams { + private CheckAnagrams() { + } /** * Check if two strings are anagrams or not * diff --git a/src/main/java/com/thealgorithms/strings/CheckVowels.java b/src/main/java/com/thealgorithms/strings/CheckVowels.java index 7b4fca3d54ce..44965cc9282c 100644 --- a/src/main/java/com/thealgorithms/strings/CheckVowels.java +++ b/src/main/java/com/thealgorithms/strings/CheckVowels.java @@ -9,7 +9,9 @@ * on the position of the characters in the conventional ordering of an * alphabet. Wikipedia: https://en.wikipedia.org/wiki/Alphabetical_order */ -public class CheckVowels { +public final class CheckVowels { + private CheckVowels() { + } private static final Set VOWELS = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u')); diff --git a/src/main/java/com/thealgorithms/strings/HammingDistance.java b/src/main/java/com/thealgorithms/strings/HammingDistance.java index bfa3114b1c03..95c523ccd411 100644 --- a/src/main/java/com/thealgorithms/strings/HammingDistance.java +++ b/src/main/java/com/thealgorithms/strings/HammingDistance.java @@ -4,7 +4,9 @@ is the number of positions at which the corresponding symbols are different. https://en.wikipedia.org/wiki/Hamming_distance */ -public class HammingDistance { +public final class HammingDistance { + private HammingDistance() { + } /** * calculate the hamming distance between two strings of equal length diff --git a/src/main/java/com/thealgorithms/strings/HorspoolSearch.java b/src/main/java/com/thealgorithms/strings/HorspoolSearch.java index 99ba2399c42f..d9187cbf66c4 100644 --- a/src/main/java/com/thealgorithms/strings/HorspoolSearch.java +++ b/src/main/java/com/thealgorithms/strings/HorspoolSearch.java @@ -44,7 +44,9 @@ * recommend checking out the wikipedia page and professor Anany Levitin's book: * Introduction To The Design And Analysis Of Algorithms. */ -public class HorspoolSearch { +public final class HorspoolSearch { + private HorspoolSearch() { + } private static HashMap shiftValues; // bad symbol table private static Integer patternLength; diff --git a/src/main/java/com/thealgorithms/strings/Isomorphic.java b/src/main/java/com/thealgorithms/strings/Isomorphic.java index 7a355dcafa06..088addc6ea45 100644 --- a/src/main/java/com/thealgorithms/strings/Isomorphic.java +++ b/src/main/java/com/thealgorithms/strings/Isomorphic.java @@ -1,8 +1,13 @@ package com.thealgorithms.strings; -import java.util.*; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; -public class Isomorphic { +public final class Isomorphic { + private Isomorphic() { + } public static boolean checkStrings(String s, String t) { if (s.length() != t.length()) { diff --git a/src/main/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumber.java b/src/main/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumber.java index 7ad9971eb56b..2e3ee25fb6ea 100644 --- a/src/main/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumber.java +++ b/src/main/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumber.java @@ -1,8 +1,12 @@ package com.thealgorithms.strings; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; -public class LetterCombinationsOfPhoneNumber { +public final class LetterCombinationsOfPhoneNumber { + private LetterCombinationsOfPhoneNumber() { + } static Character[][] numberToCharMap; diff --git a/src/main/java/com/thealgorithms/strings/LongestPalindromicSubstring.java b/src/main/java/com/thealgorithms/strings/LongestPalindromicSubstring.java index a74a10aa05c0..fa9171133a15 100644 --- a/src/main/java/com/thealgorithms/strings/LongestPalindromicSubstring.java +++ b/src/main/java/com/thealgorithms/strings/LongestPalindromicSubstring.java @@ -3,7 +3,9 @@ // Longest Palindromic Substring import java.util.Scanner; -class LongestPalindromicSubstring { +final class LongestPalindromicSubstring { + private LongestPalindromicSubstring() { + } public static void main(String[] args) { Solution s = new Solution(); diff --git a/src/main/java/com/thealgorithms/strings/Lower.java b/src/main/java/com/thealgorithms/strings/Lower.java index ef3902b15df3..e20cc5f0f2f7 100644 --- a/src/main/java/com/thealgorithms/strings/Lower.java +++ b/src/main/java/com/thealgorithms/strings/Lower.java @@ -1,6 +1,8 @@ package com.thealgorithms.strings; -public class Lower { +public final class Lower { + private Lower() { + } /** * Driver Code diff --git a/src/main/java/com/thealgorithms/strings/MyAtoi.java b/src/main/java/com/thealgorithms/strings/MyAtoi.java index a8669273a3cd..0aed13f936a7 100644 --- a/src/main/java/com/thealgorithms/strings/MyAtoi.java +++ b/src/main/java/com/thealgorithms/strings/MyAtoi.java @@ -3,16 +3,18 @@ package com.thealgorithms.strings; -public class MyAtoi { +public final class MyAtoi { + private MyAtoi() { + } public static int myAtoi(String s) { s = s.trim(); - char[] char_1 = s.toCharArray(); + char[] char1 = s.toCharArray(); String number = ""; boolean negative = false; boolean zero = false; boolean isDigit = false; - for (char ch : char_1) { + for (char ch : char1) { if (Character.isDigit(ch)) { if (number.length() > 1 && !isDigit) { number = "0"; diff --git a/src/main/java/com/thealgorithms/strings/Palindrome.java b/src/main/java/com/thealgorithms/strings/Palindrome.java index c0cab91bb7c6..3567a371d70e 100644 --- a/src/main/java/com/thealgorithms/strings/Palindrome.java +++ b/src/main/java/com/thealgorithms/strings/Palindrome.java @@ -3,7 +3,9 @@ /** * Wikipedia: https://en.wikipedia.org/wiki/Palindrome */ -class Palindrome { +final class Palindrome { + private Palindrome() { + } /** * Check if a string is palindrome string or not using String Builder diff --git a/src/main/java/com/thealgorithms/strings/Pangram.java b/src/main/java/com/thealgorithms/strings/Pangram.java index 9d734579406c..e0989ce86715 100644 --- a/src/main/java/com/thealgorithms/strings/Pangram.java +++ b/src/main/java/com/thealgorithms/strings/Pangram.java @@ -5,7 +5,9 @@ /** * Wikipedia: https://en.wikipedia.org/wiki/Pangram */ -public class Pangram { +public final class Pangram { + private Pangram() { + } /** * Test code @@ -25,12 +27,11 @@ public static void main(String[] args) { */ // alternative approach using Java Collection Framework public static boolean isPangramUsingSet(String s) { - HashSet alpha = new HashSet(); + HashSet alpha = new HashSet<>(); s = s.trim().toLowerCase(); for (int i = 0; i < s.length(); i++) if (s.charAt(i) != ' ') alpha.add(s.charAt(i)); - if (alpha.size() == 26) return true; - return false; + return alpha.size() == 26; } /** diff --git a/src/main/java/com/thealgorithms/strings/PermuteString.java b/src/main/java/com/thealgorithms/strings/PermuteString.java index d4abb67440b4..f263292eb7bd 100644 --- a/src/main/java/com/thealgorithms/strings/PermuteString.java +++ b/src/main/java/com/thealgorithms/strings/PermuteString.java @@ -11,7 +11,9 @@ again, and we backtrack to the previous position and swap B with C. So, now we got ABC and ACB. >>Repeat these steps for BAC and CBA, to get all the permutations. */ -public class PermuteString { +public final class PermuteString { + private PermuteString() { + } // Function for swapping the characters at position I with character at position j public static String swapString(String a, int i, int j) { diff --git a/src/main/java/com/thealgorithms/strings/ReverseString.java b/src/main/java/com/thealgorithms/strings/ReverseString.java index c5f54f745470..b47a77e9226c 100644 --- a/src/main/java/com/thealgorithms/strings/ReverseString.java +++ b/src/main/java/com/thealgorithms/strings/ReverseString.java @@ -3,7 +3,9 @@ /** * Reverse String using different version */ -public class ReverseString { +public final class ReverseString { + private ReverseString() { + } public static void main(String[] args) { assert reverse("abc123").equals("321cba"); diff --git a/src/main/java/com/thealgorithms/strings/ReverseStringRecursive.java b/src/main/java/com/thealgorithms/strings/ReverseStringRecursive.java index 0cd2a971b225..e180f6c3991b 100644 --- a/src/main/java/com/thealgorithms/strings/ReverseStringRecursive.java +++ b/src/main/java/com/thealgorithms/strings/ReverseStringRecursive.java @@ -4,7 +4,9 @@ * Reverse String using Recursion */ -public class ReverseStringRecursive { +public final class ReverseStringRecursive { + private ReverseStringRecursive() { + } /** * @param str string to be reversed * @return reversed string diff --git a/src/main/java/com/thealgorithms/strings/Rotation.java b/src/main/java/com/thealgorithms/strings/Rotation.java index c82ae5c32758..e1352f1197b1 100644 --- a/src/main/java/com/thealgorithms/strings/Rotation.java +++ b/src/main/java/com/thealgorithms/strings/Rotation.java @@ -6,7 +6,9 @@ * the string "abcdef" to the end of the string, so that the original string * becomes the string "cdefab" */ -public class Rotation { +public final class Rotation { + private Rotation() { + } public static void main(String[] args) { assert rotation("abcdef", 2).equals("cdefab"); diff --git a/src/main/java/com/thealgorithms/strings/StringCompression.java b/src/main/java/com/thealgorithms/strings/StringCompression.java index 28a3df743fc6..131bd4165493 100644 --- a/src/main/java/com/thealgorithms/strings/StringCompression.java +++ b/src/main/java/com/thealgorithms/strings/StringCompression.java @@ -4,7 +4,9 @@ * string * @author Swarga-codes (https://github.com/Swarga-codes) */ -public class StringCompression { +public final class StringCompression { + private StringCompression() { + } /** * Returns the compressed or encoded string * diff --git a/src/main/java/com/thealgorithms/strings/Upper.java b/src/main/java/com/thealgorithms/strings/Upper.java index 8f306a20e8f0..0fc87a9da318 100644 --- a/src/main/java/com/thealgorithms/strings/Upper.java +++ b/src/main/java/com/thealgorithms/strings/Upper.java @@ -1,6 +1,8 @@ package com.thealgorithms.strings; -public class Upper { +public final class Upper { + private Upper() { + } /** * Driver Code diff --git a/src/main/java/com/thealgorithms/strings/ValidParentheses.java b/src/main/java/com/thealgorithms/strings/ValidParentheses.java index 5d3738522d44..947a39da4bde 100644 --- a/src/main/java/com/thealgorithms/strings/ValidParentheses.java +++ b/src/main/java/com/thealgorithms/strings/ValidParentheses.java @@ -4,7 +4,9 @@ // the same type of brackets. Open brackets must be closed in the correct order. Every close // bracket has a corresponding open bracket of the same type. -public class ValidParentheses { +public final class ValidParentheses { + private ValidParentheses() { + } public static boolean isValid(String s) { char[] stack = new char[s.length()]; int head = 0; @@ -24,6 +26,8 @@ public static boolean isValid(String s) { case ']': if (head == 0 || stack[--head] != '[') return false; break; + default: + throw new IllegalArgumentException("Unexpected character: " + c); } } return head == 0; diff --git a/src/main/java/com/thealgorithms/strings/WordLadder.java b/src/main/java/com/thealgorithms/strings/WordLadder.java index e88acbd18586..16d4e0a02452 100644 --- a/src/main/java/com/thealgorithms/strings/WordLadder.java +++ b/src/main/java/com/thealgorithms/strings/WordLadder.java @@ -38,7 +38,9 @@ All the words in wordList are unique. */ -class WordLadder { +final class WordLadder { + private WordLadder() { + } /** * This function finds the ladderLength @@ -65,24 +67,24 @@ public static int ladderLength(String beginWord, String endWord, List wo int size = queue.size(); for (int i = 0; i < size; i++) { String curr = queue.poll(); - char[] words_chars = curr.toCharArray(); - for (int j = 0; j < words_chars.length; j++) { - char original_chars = words_chars[j]; + char[] wordsChars = curr.toCharArray(); + for (int j = 0; j < wordsChars.length; j++) { + char originalChars = wordsChars[j]; for (char c = 'a'; c <= 'z'; c++) { - if (words_chars[j] == c) { + if (wordsChars[j] == c) { continue; } - words_chars[j] = c; - String new_word = String.valueOf(words_chars); - if (new_word.equals(endWord)) { + wordsChars[j] = c; + String newWord = String.valueOf(wordsChars); + if (newWord.equals(endWord)) { return level + 1; } - if (set.contains(new_word)) { - set.remove(new_word); - queue.offer(new_word); + if (set.contains(newWord)) { + set.remove(newWord); + queue.offer(newWord); } } - words_chars[j] = original_chars; + wordsChars[j] = originalChars; } } level++; diff --git a/src/main/java/com/thealgorithms/strings/longestNonRepeativeSubstring.java b/src/main/java/com/thealgorithms/strings/longestNonRepeativeSubstring.java index 252517dc80cc..99154542955f 100644 --- a/src/main/java/com/thealgorithms/strings/longestNonRepeativeSubstring.java +++ b/src/main/java/com/thealgorithms/strings/longestNonRepeativeSubstring.java @@ -2,10 +2,14 @@ import java.util.HashMap; -class longestNonRepeativeSubstring { +final class longestNonRepeativeSubstring { + private longestNonRepeativeSubstring() { + } public static int lengthOfLongestSubstring(String s) { - int max = 0, start = 0, i = 0; + int max = 0; + int start = 0; + int i = 0; HashMap map = new HashMap<>(); while (i < s.length()) { diff --git a/src/main/java/com/thealgorithms/strings/zigZagPattern/zigZagPattern.java b/src/main/java/com/thealgorithms/strings/zigZagPattern/zigZagPattern.java index 75ab883386f5..2dfcf3909b8f 100644 --- a/src/main/java/com/thealgorithms/strings/zigZagPattern/zigZagPattern.java +++ b/src/main/java/com/thealgorithms/strings/zigZagPattern/zigZagPattern.java @@ -1,25 +1,32 @@ package com.thealgorithms.strings.zigZagPattern; -class zigZagPattern { +final class zigZagPattern { + private zigZagPattern() { + } public static String encode(String s, int numRows) { if (numRows < 2 || s.length() < numRows) return s; - int start = 0, index = 0, height = 1, depth = numRows; + int start = 0; + int index = 0; + int height = 1; + int depth = numRows; char[] zigZagedArray = new char[s.length()]; while (depth != 0) { - int pointer = start, height_space = 2 + ((height - 2) * 2), depth_space = 2 + ((depth - 2) * 2); + int pointer = start; + int heightSpace = 2 + ((height - 2) * 2); + int depthSpace = 2 + ((depth - 2) * 2); boolean bool = true; while (pointer < s.length()) { zigZagedArray[index++] = s.charAt(pointer); - if (height_space == 0) - pointer += depth_space; - else if (depth_space == 0) - pointer += height_space; + if (heightSpace == 0) + pointer += depthSpace; + else if (depthSpace == 0) + pointer += heightSpace; else if (bool) { - pointer += depth_space; + pointer += depthSpace; bool = false; } else { - pointer += height_space; + pointer += heightSpace; bool = true; } } diff --git a/src/test/java/com/thealgorithms/backtracking/AllPathsFromSourceToTargetTest.java b/src/test/java/com/thealgorithms/backtracking/AllPathsFromSourceToTargetTest.java index cf702ccadecd..177163b09ca1 100644 --- a/src/test/java/com/thealgorithms/backtracking/AllPathsFromSourceToTargetTest.java +++ b/src/test/java/com/thealgorithms/backtracking/AllPathsFromSourceToTargetTest.java @@ -1,8 +1,8 @@ package com.thealgorithms.backtracking; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; -import java.util.*; +import java.util.List; import org.junit.jupiter.api.Test; public class AllPathsFromSourceToTargetTest { diff --git a/src/test/java/com/thealgorithms/backtracking/ArrayCombinationTest.java b/src/test/java/com/thealgorithms/backtracking/ArrayCombinationTest.java index 02527257ccc6..23fa5d54574c 100644 --- a/src/test/java/com/thealgorithms/backtracking/ArrayCombinationTest.java +++ b/src/test/java/com/thealgorithms/backtracking/ArrayCombinationTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.backtracking; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import java.util.List; import java.util.TreeSet; diff --git a/src/test/java/com/thealgorithms/backtracking/CombinationTest.java b/src/test/java/com/thealgorithms/backtracking/CombinationTest.java index ed6148271d91..44edc3077fd5 100644 --- a/src/test/java/com/thealgorithms/backtracking/CombinationTest.java +++ b/src/test/java/com/thealgorithms/backtracking/CombinationTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.backtracking; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import java.util.TreeSet; diff --git a/src/test/java/com/thealgorithms/backtracking/MColoringTest.java b/src/test/java/com/thealgorithms/backtracking/MColoringTest.java index 606193b05197..8b505abbc046 100644 --- a/src/test/java/com/thealgorithms/backtracking/MColoringTest.java +++ b/src/test/java/com/thealgorithms/backtracking/MColoringTest.java @@ -1,8 +1,8 @@ package com.thealgorithms.backtracking; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.*; +import java.util.ArrayList; import org.junit.jupiter.api.Test; /** diff --git a/src/test/java/com/thealgorithms/backtracking/MazeRecursionTest.java b/src/test/java/com/thealgorithms/backtracking/MazeRecursionTest.java index 1464c5221bff..edaca14af067 100644 --- a/src/test/java/com/thealgorithms/backtracking/MazeRecursionTest.java +++ b/src/test/java/com/thealgorithms/backtracking/MazeRecursionTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.backtracking; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/backtracking/ParenthesesGeneratorTest.java b/src/test/java/com/thealgorithms/backtracking/ParenthesesGeneratorTest.java new file mode 100644 index 000000000000..9da16061d8f4 --- /dev/null +++ b/src/test/java/com/thealgorithms/backtracking/ParenthesesGeneratorTest.java @@ -0,0 +1,33 @@ +package com.thealgorithms.backtracking; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.List; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class ParenthesesGeneratorTest { + @ParameterizedTest + @MethodSource("regularInputStream") + void regularInputTests(int input, List expected) { + assertEquals(expected, ParenthesesGenerator.generateParentheses(input)); + } + + @ParameterizedTest + @MethodSource("negativeInputStream") + void throwsForNegativeInputTests(int input) { + assertThrows(IllegalArgumentException.class, () -> ParenthesesGenerator.generateParentheses(input)); + } + + private static Stream regularInputStream() { + return Stream.of(Arguments.of(0, List.of("")), Arguments.of(1, List.of("()")), Arguments.of(2, List.of("(())", "()()")), Arguments.of(3, List.of("((()))", "(()())", "(())()", "()(())", "()()()")), + Arguments.of(4, List.of("(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()", "(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()"))); + } + + private static Stream negativeInputStream() { + return Stream.of(Arguments.of(-1), Arguments.of(-5), Arguments.of(-10)); + } +} diff --git a/src/test/java/com/thealgorithms/backtracking/PermutationTest.java b/src/test/java/com/thealgorithms/backtracking/PermutationTest.java index b6c0400c623f..76a714829109 100644 --- a/src/test/java/com/thealgorithms/backtracking/PermutationTest.java +++ b/src/test/java/com/thealgorithms/backtracking/PermutationTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.backtracking; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Arrays; import java.util.List; diff --git a/src/test/java/com/thealgorithms/backtracking/SubsequenceFinderTest.java b/src/test/java/com/thealgorithms/backtracking/SubsequenceFinderTest.java new file mode 100644 index 000000000000..dac2e2675674 --- /dev/null +++ b/src/test/java/com/thealgorithms/backtracking/SubsequenceFinderTest.java @@ -0,0 +1,28 @@ +package com.thealgorithms.backtracking; + +import static org.junit.jupiter.api.Assertions.assertIterableEquals; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +public class SubsequenceFinderTest { + + @ParameterizedTest + @MethodSource("getTestCases") + void testGenerateAll(TestCase testData) { + final var actual = SubsequenceFinder.generateAll(testData.input()); + assertIterableEquals(testData.expected(), actual); + } + + static Stream getTestCases() { + return Stream.of(new TestCase(new ArrayList<>(), List.of(List.of())), new TestCase(List.of(1, 2), List.of(List.of(), List.of(2), List.of(1), List.of(1, 2))), + new TestCase(List.of("A", "B", "C"), List.of(List.of(), List.of("C"), List.of("B"), List.of("B", "C"), List.of("A"), List.of("A", "C"), List.of("A", "B"), List.of("A", "B", "C"))), + new TestCase(List.of(1, 2, 3), List.of(List.of(), List.of(3), List.of(2), List.of(2, 3), List.of(1), List.of(1, 3), List.of(1, 2), List.of(1, 2, 3))), new TestCase(List.of(2, 2), List.of(List.of(), List.of(2), List.of(2), List.of(2, 2)))); + } + + record TestCase(List input, List> expected) { + } +} diff --git a/src/test/java/com/thealgorithms/bitmanipulation/HighestSetBitTest.java b/src/test/java/com/thealgorithms/bitmanipulation/HighestSetBitTest.java index 8dc61ae4fa9d..532f06f79ab3 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/HighestSetBitTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/HighestSetBitTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.bitmanipulation; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBitTest.java b/src/test/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBitTest.java index 56e9108cbc4b..9bf804373438 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBitTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/IndexOfRightMostSetBitTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.bitmanipulation; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/bitmanipulation/IsEvenTest.java b/src/test/java/com/thealgorithms/bitmanipulation/IsEvenTest.java index 2e33539fe4a7..0b2bfb0bb065 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/IsEvenTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/IsEvenTest.java @@ -1,14 +1,17 @@ package com.thealgorithms.bitmanipulation; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; class IsEvenTest { @Test void testIsEven() { - assertEquals(true, IsEven.isEven(2)); - assertEquals(true, IsEven.isEven(-12)); - assertEquals(false, IsEven.isEven(21)); + assertTrue(IsEven.isEven(0)); + assertTrue(IsEven.isEven(2)); + assertTrue(IsEven.isEven(-12)); + assertFalse(IsEven.isEven(21)); + assertFalse(IsEven.isEven(-1)); } } diff --git a/src/test/java/com/thealgorithms/bitmanipulation/IsPowerTwoTest.java b/src/test/java/com/thealgorithms/bitmanipulation/IsPowerTwoTest.java index 6954619806f6..27bc93c31ae4 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/IsPowerTwoTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/IsPowerTwoTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.bitmanipulation; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinderTest.java b/src/test/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinderTest.java index f0f7353a3365..1addde057181 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinderTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/NonRepeatingNumberFinderTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.bitmanipulation; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; @@ -13,11 +13,11 @@ class NonRepeatingNumberFinderTest { @Test void testNonRepeatingNumberFinder() { - int arr[] = {1, 2, 1, 2, 6}; + int[] arr = {1, 2, 1, 2, 6}; assertEquals(6, NonRepeatingNumberFinder.findNonRepeatingNumber(arr)); - int arr1[] = {1, 2, 1, 2}; + int[] arr1 = {1, 2, 1, 2}; assertEquals(0, NonRepeatingNumberFinder.findNonRepeatingNumber(arr1)); - int arr2[] = {12}; + int[] arr2 = {12}; assertEquals(12, NonRepeatingNumberFinder.findNonRepeatingNumber(arr2)); } } diff --git a/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java b/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java index 31ab24826783..13761ac23e44 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java @@ -5,7 +5,8 @@ * @author Bama Charan Chhandogi */ -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java b/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java index 730e345686b6..967a89a1ee97 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.bitmanipulation; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/ciphers/BlowfishTest.java b/src/test/java/com/thealgorithms/ciphers/BlowfishTest.java index e143850e1669..ef5e634f781b 100644 --- a/src/test/java/com/thealgorithms/ciphers/BlowfishTest.java +++ b/src/test/java/com/thealgorithms/ciphers/BlowfishTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.ciphers; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/ciphers/CaesarTest.java b/src/test/java/com/thealgorithms/ciphers/CaesarTest.java index 5fa81f95fa49..7aa41c4cf423 100644 --- a/src/test/java/com/thealgorithms/ciphers/CaesarTest.java +++ b/src/test/java/com/thealgorithms/ciphers/CaesarTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.ciphers; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/ciphers/DESTest.java b/src/test/java/com/thealgorithms/ciphers/DESTest.java index e652c028d5dd..ddc643a6eb35 100644 --- a/src/test/java/com/thealgorithms/ciphers/DESTest.java +++ b/src/test/java/com/thealgorithms/ciphers/DESTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.ciphers; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -45,7 +45,6 @@ void testDecrypt() { + "001101001101001001101011001000011100000011001000011011001110101010010111101111000111" + "101010011010110000100100110011000001010001010110010011011010001010011111000001110011001010011"; String expectedOutput = "Your lips are smoother than vaseline\r\n"; - ; // when String plainText = des.decrypt(cipherText); diff --git a/src/test/java/com/thealgorithms/ciphers/PlayfairTest.java b/src/test/java/com/thealgorithms/ciphers/PlayfairTest.java index 5562241b48db..fa497e4682e8 100644 --- a/src/test/java/com/thealgorithms/ciphers/PlayfairTest.java +++ b/src/test/java/com/thealgorithms/ciphers/PlayfairTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.ciphers; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/BinaryToHexadecimalTest.java b/src/test/java/com/thealgorithms/conversions/BinaryToHexadecimalTest.java index 9e7f9f697c2a..5cbdf39acb27 100644 --- a/src/test/java/com/thealgorithms/conversions/BinaryToHexadecimalTest.java +++ b/src/test/java/com/thealgorithms/conversions/BinaryToHexadecimalTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/BinaryToOctalTest.java b/src/test/java/com/thealgorithms/conversions/BinaryToOctalTest.java index 39a7f67024f1..c7018daecf23 100644 --- a/src/test/java/com/thealgorithms/conversions/BinaryToOctalTest.java +++ b/src/test/java/com/thealgorithms/conversions/BinaryToOctalTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/DecimalToHexaDecimalTest.java b/src/test/java/com/thealgorithms/conversions/DecimalToHexaDecimalTest.java index de2cb7e25ccd..1105f457504e 100644 --- a/src/test/java/com/thealgorithms/conversions/DecimalToHexaDecimalTest.java +++ b/src/test/java/com/thealgorithms/conversions/DecimalToHexaDecimalTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/HexToOctTest.java b/src/test/java/com/thealgorithms/conversions/HexToOctTest.java index d6a9b6092628..5924aa31854b 100644 --- a/src/test/java/com/thealgorithms/conversions/HexToOctTest.java +++ b/src/test/java/com/thealgorithms/conversions/HexToOctTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java b/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java index a5abcb95cb8d..72a0a0174a93 100644 --- a/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java +++ b/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/IntegerToRomanTest.java b/src/test/java/com/thealgorithms/conversions/IntegerToRomanTest.java index 046b00754c4c..04768d034b93 100644 --- a/src/test/java/com/thealgorithms/conversions/IntegerToRomanTest.java +++ b/src/test/java/com/thealgorithms/conversions/IntegerToRomanTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/OctalToBinaryTest.java b/src/test/java/com/thealgorithms/conversions/OctalToBinaryTest.java index 6c7fe8702b68..86cf692c5258 100644 --- a/src/test/java/com/thealgorithms/conversions/OctalToBinaryTest.java +++ b/src/test/java/com/thealgorithms/conversions/OctalToBinaryTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/OctalToDecimalTest.java b/src/test/java/com/thealgorithms/conversions/OctalToDecimalTest.java index 4a4c6d84b053..6e17ea14efc8 100644 --- a/src/test/java/com/thealgorithms/conversions/OctalToDecimalTest.java +++ b/src/test/java/com/thealgorithms/conversions/OctalToDecimalTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/conversions/OctalToHexadecimalTest.java b/src/test/java/com/thealgorithms/conversions/OctalToHexadecimalTest.java index 347f0eb86fb5..f71732b27d51 100644 --- a/src/test/java/com/thealgorithms/conversions/OctalToHexadecimalTest.java +++ b/src/test/java/com/thealgorithms/conversions/OctalToHexadecimalTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.conversions; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/buffers/CircularBufferTest.java b/src/test/java/com/thealgorithms/datastructures/buffers/CircularBufferTest.java index 9158d0e12b5d..9bc3b89ced9e 100644 --- a/src/test/java/com/thealgorithms/datastructures/buffers/CircularBufferTest.java +++ b/src/test/java/com/thealgorithms/datastructures/buffers/CircularBufferTest.java @@ -1,11 +1,18 @@ package com.thealgorithms.datastructures.buffers; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.concurrent.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicIntegerArray; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.RepeatedTest; diff --git a/src/test/java/com/thealgorithms/datastructures/crdt/GCounterTest.java b/src/test/java/com/thealgorithms/datastructures/crdt/GCounterTest.java index f931e602383c..eb48c7d9e8d6 100644 --- a/src/test/java/com/thealgorithms/datastructures/crdt/GCounterTest.java +++ b/src/test/java/com/thealgorithms/datastructures/crdt/GCounterTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.datastructures.crdt; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/crdt/GSetTest.java b/src/test/java/com/thealgorithms/datastructures/crdt/GSetTest.java index 74250ede1f23..b4566aa9b1d8 100644 --- a/src/test/java/com/thealgorithms/datastructures/crdt/GSetTest.java +++ b/src/test/java/com/thealgorithms/datastructures/crdt/GSetTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.datastructures.crdt; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/crdt/LWWElementSetTest.java b/src/test/java/com/thealgorithms/datastructures/crdt/LWWElementSetTest.java index 6fb227bd80c5..36593d6669f8 100644 --- a/src/test/java/com/thealgorithms/datastructures/crdt/LWWElementSetTest.java +++ b/src/test/java/com/thealgorithms/datastructures/crdt/LWWElementSetTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.datastructures.crdt; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/crdt/ORSetTest.java b/src/test/java/com/thealgorithms/datastructures/crdt/ORSetTest.java index f12c38f174dc..f6d19a3e7b20 100644 --- a/src/test/java/com/thealgorithms/datastructures/crdt/ORSetTest.java +++ b/src/test/java/com/thealgorithms/datastructures/crdt/ORSetTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.datastructures.crdt; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Set; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/crdt/PNCounterTest.java b/src/test/java/com/thealgorithms/datastructures/crdt/PNCounterTest.java index 46c22a6edcb7..4081b8ae01d8 100644 --- a/src/test/java/com/thealgorithms/datastructures/crdt/PNCounterTest.java +++ b/src/test/java/com/thealgorithms/datastructures/crdt/PNCounterTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.datastructures.crdt; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/crdt/TwoPSetTest.java b/src/test/java/com/thealgorithms/datastructures/crdt/TwoPSetTest.java index d81362e854d0..dfe392a0d616 100644 --- a/src/test/java/com/thealgorithms/datastructures/crdt/TwoPSetTest.java +++ b/src/test/java/com/thealgorithms/datastructures/crdt/TwoPSetTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.datastructures.crdt; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java index b5f75f5e831e..579e236699b3 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.datastructures.graphs; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.datastructures.graphs.BoruvkaAlgorithm.Graph; import java.util.ArrayList; diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/HamiltonianCycleTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/HamiltonianCycleTest.java index 9890463de3ff..ed7c886d784e 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/HamiltonianCycleTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/HamiltonianCycleTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.datastructures.graphs; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/HashMapCuckooHashingTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/HashMapCuckooHashingTest.java index 851432006123..14bddeae1c91 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/HashMapCuckooHashingTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/HashMapCuckooHashingTest.java @@ -1,6 +1,9 @@ package com.thealgorithms.datastructures.hashmap; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import com.thealgorithms.datastructures.hashmap.hashing.HashMapCuckooHashing; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayListTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayListTest.java index 621b353b85df..37e43d2aada3 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayListTest.java @@ -1,6 +1,9 @@ package com.thealgorithms.datastructures.hashmap.hashing; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayTest.java index b4443da153b4..483e43bb5cb3 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/GenericHashMapUsingArrayTest.java @@ -1,6 +1,9 @@ package com.thealgorithms.datastructures.hashmap.hashing; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java index df014510e8cd..49133ba5ffb5 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.datastructures.hashmap.hashing; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Collections; diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MapTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MapTest.java index ea6595cc803c..44551a8adac6 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MapTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MapTest.java @@ -1,6 +1,9 @@ package com.thealgorithms.datastructures.hashmap.hashing; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Random; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/heaps/LeftistHeapTest.java b/src/test/java/com/thealgorithms/datastructures/heaps/LeftistHeapTest.java index dfaba3911d0c..f4c4c548ffbf 100644 --- a/src/test/java/com/thealgorithms/datastructures/heaps/LeftistHeapTest.java +++ b/src/test/java/com/thealgorithms/datastructures/heaps/LeftistHeapTest.java @@ -14,14 +14,14 @@ void testLeftistHeap() { heap.insert(2); heap.insert(3); heap.insert(1); - heap.in_order(); - Assertions.assertTrue(heap.in_order().toString().equals("[6, 2, 3, 1]")); - Assertions.assertTrue(heap.extract_min() == 1); - Assertions.assertTrue(heap.in_order().toString().equals("[6, 2, 3]")); + heap.inOrder(); + Assertions.assertTrue(heap.inOrder().toString().equals("[6, 2, 3, 1]")); + Assertions.assertTrue(heap.extractMin() == 1); + Assertions.assertTrue(heap.inOrder().toString().equals("[6, 2, 3]")); heap.insert(8); heap.insert(12); heap.insert(4); - Assertions.assertTrue(heap.in_order().toString().equals("[8, 3, 12, 2, 6, 4]")); + Assertions.assertTrue(heap.inOrder().toString().equals("[8, 3, 12, 2, 6, 4]")); heap.clear(); Assertions.assertTrue(heap.isEmpty()); } diff --git a/src/test/java/com/thealgorithms/datastructures/lists/QuickSortLinkedListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/QuickSortLinkedListTest.java index f4bcfd7fc40d..c4113b787de9 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/QuickSortLinkedListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/QuickSortLinkedListTest.java @@ -6,7 +6,8 @@ * GitHub: https://github.com/Prabhat-Kumar-42 */ -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/lists/ReverseKGroupTest.java b/src/test/java/com/thealgorithms/datastructures/lists/ReverseKGroupTest.java index 8273b890e6ae..c03f5b14c641 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/ReverseKGroupTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/ReverseKGroupTest.java @@ -5,7 +5,8 @@ * Author: Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/lists/RotateSinglyLinkedListsTest.java b/src/test/java/com/thealgorithms/datastructures/lists/RotateSinglyLinkedListsTest.java index 23780758b664..d3c020f8881b 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/RotateSinglyLinkedListsTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/RotateSinglyLinkedListsTest.java @@ -5,7 +5,8 @@ * Author: Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi) */ -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/lists/SinglyLinkedListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/SinglyLinkedListTest.java index bef02e62a929..a47434083cdb 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/SinglyLinkedListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/SinglyLinkedListTest.java @@ -1,6 +1,9 @@ package com.thealgorithms.datastructures.lists; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.Arrays; @@ -163,7 +166,7 @@ void reverseListTest() { } // This is Recursive Reverse List Test // Test to check whether the method reverseListRec() works fine - void RecursiveReverseList() { + void recursiveReverseList() { // Create a linked list: 1 -> 2 -> 3 -> 4 -> 5 SinglyLinkedList list = createSampleList(5); @@ -179,7 +182,7 @@ void RecursiveReverseList() { } @Test - void RecursiveReverseListNullPointer() { + void recursiveReverseListNullPointer() { // Create an empty linked list SinglyLinkedList list = new SinglyLinkedList(); Node first = list.getHead(); @@ -192,7 +195,7 @@ void RecursiveReverseListNullPointer() { } @Test - void RecursiveReverseListTest() { + void recursiveReverseListTest() { // Create a linked list with values from 1 to 20 SinglyLinkedList list = createSampleList(20); diff --git a/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java index 794b38d1502e..c572739ffbbf 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java @@ -1,8 +1,10 @@ package com.thealgorithms.datastructures.lists; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -import java.util.*; +import java.util.Arrays; import java.util.stream.IntStream; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/trees/LazySegmentTreeTest.java b/src/test/java/com/thealgorithms/datastructures/trees/LazySegmentTreeTest.java index 6df221280f86..e8294a323463 100644 --- a/src/test/java/com/thealgorithms/datastructures/trees/LazySegmentTreeTest.java +++ b/src/test/java/com/thealgorithms/datastructures/trees/LazySegmentTreeTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.datastructures.trees; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/datastructures/trees/TreeTestUtils.java b/src/test/java/com/thealgorithms/datastructures/trees/TreeTestUtils.java index 3bd197bf8bf8..9628e86b9bff 100644 --- a/src/test/java/com/thealgorithms/datastructures/trees/TreeTestUtils.java +++ b/src/test/java/com/thealgorithms/datastructures/trees/TreeTestUtils.java @@ -4,7 +4,9 @@ import java.util.LinkedList; import java.util.Queue; -public class TreeTestUtils { +public final class TreeTestUtils { + private TreeTestUtils() { + } /** * Creates a binary tree with given values diff --git a/src/test/java/com/thealgorithms/divideandconquer/BinaryExponentiationTest.java b/src/test/java/com/thealgorithms/divideandconquer/BinaryExponentiationTest.java index bf1a60e84e77..ccada6e061e1 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/BinaryExponentiationTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/BinaryExponentiationTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.divideandconquer; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java b/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java index 8331d8823486..1ec45a863e1a 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java @@ -1,40 +1,41 @@ package com.thealgorithms.divideandconquer; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; class StrassenMatrixMultiplicationTest { - StrassenMatrixMultiplication SMM = new StrassenMatrixMultiplication(); + StrassenMatrixMultiplication smm = new StrassenMatrixMultiplication(); // Strassen Matrix Multiplication can only be allplied to matrices of size 2^n // and has to be a Square Matrix @Test - public void StrassenMatrixMultiplicationTest2x2() { - int[][] A = {{1, 2}, {3, 4}}; - int[][] B = {{5, 6}, {7, 8}}; + public void strassenMatrixMultiplicationTest2x2() { + int[][] a = {{1, 2}, {3, 4}}; + int[][] b = {{5, 6}, {7, 8}}; int[][] expResult = {{19, 22}, {43, 50}}; - int[][] actResult = SMM.multiply(A, B); + int[][] actResult = smm.multiply(a, b); assertArrayEquals(expResult, actResult); } @Test - void StrassenMatrixMultiplicationTest4x4() { - int[][] A = {{1, 2, 5, 4}, {9, 3, 0, 6}, {4, 6, 3, 1}, {0, 2, 0, 6}}; - int[][] B = {{1, 0, 4, 1}, {1, 2, 0, 2}, {0, 3, 1, 3}, {1, 8, 1, 2}}; + void strassenMatrixMultiplicationTest4x4() { + int[][] a = {{1, 2, 5, 4}, {9, 3, 0, 6}, {4, 6, 3, 1}, {0, 2, 0, 6}}; + int[][] b = {{1, 0, 4, 1}, {1, 2, 0, 2}, {0, 3, 1, 3}, {1, 8, 1, 2}}; int[][] expResult = {{7, 51, 13, 28}, {18, 54, 42, 27}, {11, 29, 20, 27}, {8, 52, 6, 16}}; - int[][] actResult = SMM.multiply(A, B); + int[][] actResult = smm.multiply(a, b); assertArrayEquals(expResult, actResult); } @Test - void StrassenMatrixMultiplicationTestNegetiveNumber4x4() { - int[][] A = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; - int[][] B = {{1, -2, -3, 4}, {4, -3, -2, 1}, {5, -6, -7, 8}, {8, -7, -6, -5}}; + + void strassenMatrixMultiplicationTestNegetiveNumber4x4() { + int[][] a = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; + int[][] b = {{1, -2, -3, 4}, {4, -3, -2, 1}, {5, -6, -7, 8}, {8, -7, -6, -5}}; int[][] expResult = {{56, -54, -52, 10}, {128, -126, -124, 42}, {200, -198, -196, 74}, {272, -270, -268, 106}}; - int[][] actResult = SMM.multiply(A, B); + int[][] actResult = smm.multiply(a, b); assertArrayEquals(expResult, actResult); } } diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java index 8fbed8528bee..a065bb8c2a10 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/CatalanNumberTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.dynamicprogramming; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackMemoizationTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackMemoizationTest.java index b68e72931e71..d220a2bb512e 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackMemoizationTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackMemoizationTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.dynamicprogramming; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; @@ -9,7 +9,7 @@ public class KnapsackMemoizationTest { KnapsackMemoization knapsackMemoization = new KnapsackMemoization(); @Test - void Test1() { + void test1() { int[] weight = {1, 3, 4, 5}; int[] value = {1, 4, 5, 7}; int capacity = 10; @@ -17,7 +17,7 @@ void Test1() { } @Test - void Test2() { + void test2() { int[] weight = {95, 4, 60, 32, 23, 72, 80, 62, 65, 46}; int[] value = {55, 10, 47, 5, 4, 50, 8, 61, 85, 87}; int capacity = 269; @@ -25,7 +25,7 @@ void Test2() { } @Test - void Test3() { + void test3() { int[] weight = {10, 20, 30}; int[] value = {60, 100, 120}; int capacity = 50; diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/LevenshteinDistanceTests.java b/src/test/java/com/thealgorithms/dynamicprogramming/LevenshteinDistanceTests.java index a22bf3fea30c..ad4c4c7c53e0 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/LevenshteinDistanceTests.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/LevenshteinDistanceTests.java @@ -2,15 +2,44 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.Arrays; +import java.util.List; +import java.util.function.ToIntBiFunction; +import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; public class LevenshteinDistanceTests { @ParameterizedTest - @CsvSource({"dog,cat,3", "sunday,saturday,3", "cat,cats,1", "rain,train,1"}) - void levenshteinDistanceTest(String str1, String str2, int distance) { - int result = LevenshteinDistance.calculateLevenshteinDistance(str1, str2); - assertEquals(distance, result); + @MethodSource("testCases") + public void testLevenshteinDistance(final int expected, final String str1, final String str2, final ToIntBiFunction dist) { + assertEquals(expected, dist.applyAsInt(str1, str2)); + assertEquals(expected, dist.applyAsInt(str2, str1)); + assertEquals(0, dist.applyAsInt(str1, str1)); + assertEquals(0, dist.applyAsInt(str2, str2)); + } + + private static Stream testCases() { + final Object[][] testData = { + {0, "", ""}, + {0, "Hello, World!", "Hello, World!"}, + {4, "", "Rust"}, + {3, "horse", "ros"}, + {6, "tan", "elephant"}, + {8, "execute", "intention"}, + {1, "a", "b"}, + {1, "a", "aa"}, + {1, "a", ""}, + {1, "a", "ab"}, + {1, "a", "ba"}, + {2, "a", "bc"}, + {2, "a", "cb"}, + }; + + final List> methods = Arrays.asList(LevenshteinDistance::naiveLevenshteinDistance, LevenshteinDistance::optimizedLevenshteinDistance); + + return Stream.of(testData).flatMap(input -> methods.stream().map(method -> Arguments.of(input[0], input[1], input[2], method))); } } diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequenceTests.java b/src/test/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequenceTests.java new file mode 100644 index 000000000000..5135105592a5 --- /dev/null +++ b/src/test/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequenceTests.java @@ -0,0 +1,49 @@ +package com.thealgorithms.dynamicprogramming; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class LongestIncreasingSubsequenceTests { + @FunctionalInterface + public interface IntArrayToInt { + int apply(int[] array); + } + + @ParameterizedTest + @MethodSource("testCases") + public void testLongestIncreasingSubsequence(final int expected, final int[] input, final IntArrayToInt method) { + assertEquals(expected, method.apply(input)); + } + + private static Stream testCases() { + final Object[][] testData = { + {0, new int[] {}}, + {1, new int[] {1}}, + {1, new int[] {2, 2}}, + {1, new int[] {3, 3, 3}}, + {1, new int[] {4, 4, 4, 4}}, + {1, new int[] {5, 5, 5, 5, 5}}, + {2, new int[] {1, 2}}, + {2, new int[] {1, 2, 2, 2, 2}}, + {2, new int[] {1, 0, 2}}, + {3, new int[] {1, 10, 2, 30}}, + {3, new int[] {5, 8, 3, 7, 9, 1}}, + {6, new int[] {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15}}, + {4, new int[] {10, 9, 2, 5, 3, 7, 101, 18}}, + {4, new int[] {10, 10, 9, 9, 2, 2, 5, 5, 3, 3, 7, 7, 101, 101, 18, 18}}, + {4, new int[] {0, 1, 0, 3, 2, 3}}, + {2, new int[] {1, 1, 2, 2, 2}}, + {3, new int[] {1, 1, 2, 2, 2, 3, 3, 3, 3}}, + }; + + final List methods = Arrays.asList(LongestIncreasingSubsequence::lis, LongestIncreasingSubsequence::findLISLen); + + return Stream.of(testData).flatMap(input -> methods.stream().map(method -> Arguments.of(input[0], input[1], method))); + } +} diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/OptimalJobSchedulingTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/OptimalJobSchedulingTest.java index 72e1d660028c..173ed00488d0 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/OptimalJobSchedulingTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/OptimalJobSchedulingTest.java @@ -15,11 +15,11 @@ public void testOptimalJobScheduling1() { int numberProcesses = 5; int numberMachines = 4; - int[][] Run = {{5, 1, 3, 2}, {4, 2, 1, 3}, {1, 5, 2, 1}, {2, 3, 4, 2}, {1, 1, 3, 1}}; + int[][] run = {{5, 1, 3, 2}, {4, 2, 1, 3}, {1, 5, 2, 1}, {2, 3, 4, 2}, {1, 1, 3, 1}}; - int[][] Transfer = {{0, 1, 2, 4}, {1, 0, 2, 3}, {2, 2, 0, 1}, {4, 3, 1, 0}}; + int[][] transfer = {{0, 1, 2, 4}, {1, 0, 2, 3}, {2, 2, 0, 1}, {4, 3, 1, 0}}; - OptimalJobScheduling opt = new OptimalJobScheduling(numberProcesses, numberMachines, Run, Transfer); + OptimalJobScheduling opt = new OptimalJobScheduling(numberProcesses, numberMachines, run, transfer); opt.execute(); @@ -40,11 +40,11 @@ public void testOptimalJobScheduling2() { int numberProcesses = 3; int numberMachines = 3; - int[][] Run = {{5, 1, 3}, {4, 2, 1}, {1, 5, 2}}; + int[][] run = {{5, 1, 3}, {4, 2, 1}, {1, 5, 2}}; - int[][] Transfer = {{0, 1, 2}, {1, 0, 2}, {2, 2, 0}}; + int[][] transfer = {{0, 1, 2}, {1, 0, 2}, {2, 2, 0}}; - OptimalJobScheduling opt = new OptimalJobScheduling(numberProcesses, numberMachines, Run, Transfer); + OptimalJobScheduling opt = new OptimalJobScheduling(numberProcesses, numberMachines, run, transfer); opt.execute(); @@ -65,7 +65,7 @@ public void testOptimalJobScheduling3() { int numberProcesses = 6; int numberMachines = 4; - int[][] Run = { + int[][] run = { {5, 1, 3, 2}, {4, 2, 1, 1}, {1, 5, 2, 6}, @@ -74,14 +74,14 @@ public void testOptimalJobScheduling3() { {3, 2, 2, 3}, }; - int[][] Transfer = { + int[][] transfer = { {0, 1, 2, 1}, {1, 0, 2, 3}, {2, 2, 0, 2}, {1, 3, 2, 0}, }; - OptimalJobScheduling opt = new OptimalJobScheduling(numberProcesses, numberMachines, Run, Transfer); + OptimalJobScheduling opt = new OptimalJobScheduling(numberProcesses, numberMachines, run, transfer); opt.execute(); diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/PartitionProblemTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/PartitionProblemTest.java index d63c634c3969..098893f41771 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/PartitionProblemTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/PartitionProblemTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.dynamicprogramming; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/SubsetCountTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/SubsetCountTest.java index 13f7b6f9c408..c76f89deb600 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/SubsetCountTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/SubsetCountTest.java @@ -5,27 +5,25 @@ import org.junit.jupiter.api.Test; public class SubsetCountTest { - public static SubsetCount obj = new SubsetCount(); - @Test void hasMultipleSubset() { int[] arr = new int[] {1, 2, 3, 3}; - assertEquals(3, obj.getCount(arr, 6)); + assertEquals(3, SubsetCount.getCount(arr, 6)); } @Test void singleElementSubset() { int[] arr = new int[] {1, 1, 1, 1}; - assertEquals(4, obj.getCount(arr, 1)); + assertEquals(4, SubsetCount.getCount(arr, 1)); } @Test void hasMultipleSubsetSO() { int[] arr = new int[] {1, 2, 3, 3}; - assertEquals(3, obj.getCountSO(arr, 6)); + assertEquals(3, SubsetCount.getCountSO(arr, 6)); } @Test void singleSubsetSO() { int[] arr = new int[] {1, 1, 1, 1}; - assertEquals(1, obj.getCountSO(arr, 4)); + assertEquals(1, SubsetCount.getCountSO(arr, 4)); } } diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/SumOfSubsetTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/SumOfSubsetTest.java index 53c34937cbab..9df35447eefa 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/SumOfSubsetTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/SumOfSubsetTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.dynamicprogramming; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; @@ -8,10 +9,10 @@ class SumOfSubsetTest { @Test void basicCheck() { - assertEquals(false, SumOfSubset.subsetSum(new int[] {1, 2, 7, 10, 9}, 4, 14)); - assertEquals(false, SumOfSubset.subsetSum(new int[] {2, 15, 1, 6, 7}, 4, 4)); - assertEquals(true, SumOfSubset.subsetSum(new int[] {7, 3, 2, 5, 8}, 4, 14)); - assertEquals(true, SumOfSubset.subsetSum(new int[] {4, 3, 2, 1}, 3, 5)); - assertEquals(true, SumOfSubset.subsetSum(new int[] {1, 7, 2, 9, 10}, 4, 13)); + assertFalse(SumOfSubset.subsetSum(new int[] {1, 2, 7, 10, 9}, 4, 14)); + assertFalse(SumOfSubset.subsetSum(new int[] {2, 15, 1, 6, 7}, 4, 4)); + assertTrue(SumOfSubset.subsetSum(new int[] {7, 3, 2, 5, 8}, 4, 14)); + assertTrue(SumOfSubset.subsetSum(new int[] {4, 3, 2, 1}, 3, 5)); + assertTrue(SumOfSubset.subsetSum(new int[] {1, 7, 2, 9, 10}, 4, 13)); } } diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/UniquePathsTests.java b/src/test/java/com/thealgorithms/dynamicprogramming/UniquePathsTests.java index f6a86e72ad9c..386938d28ec9 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/UniquePathsTests.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/UniquePathsTests.java @@ -1,58 +1,59 @@ package com.thealgorithms.dynamicprogramming; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; public class UniquePathsTests { @Test - public void testUniquePaths_3x3() { + public void testUniquePaths3x3() { assertEquals(6, UniquePaths.uniquePaths(3, 3)); } @Test - public void testUniquePaths_1x1() { + public void testUniquePaths1x1() { assertEquals(1, UniquePaths.uniquePaths(1, 1)); } @Test - public void testUniquePaths_3x7() { + public void testUniquePaths3x7() { assertEquals(28, UniquePaths.uniquePaths(3, 7)); } @Test - public void testUniquePaths_7x3() { + public void testUniquePaths7x3() { assertEquals(28, UniquePaths.uniquePaths(7, 3)); } @Test - public void testUniquePaths_100x100() { + public void testUniquePaths100x100() { assertThrows(ArithmeticException.class, () -> UniquePaths.uniquePaths(100, 100)); } @Test - public void testUniquePaths2_3x3() { + public void testUniquePathsII3x3() { assertEquals(6, UniquePaths.uniquePaths2(3, 3)); } @Test - public void testUniquePaths2_1x1() { + public void testUniquePathsII1x1() { assertEquals(1, UniquePaths.uniquePaths2(1, 1)); } @Test - public void testUniquePaths2_3x7() { + public void testUniquePathsII3x7() { assertEquals(28, UniquePaths.uniquePaths2(3, 7)); } @Test - public void testUniquePaths2_7x3() { + public void testUniquePathsII7x3() { assertEquals(28, UniquePaths.uniquePaths2(7, 3)); } @Test - public void testUniquePaths2_100x100() { + public void testUniquePathsII100x100() { assertThrows(ArithmeticException.class, () -> UniquePaths.uniquePaths2(100, 100)); } } diff --git a/src/test/java/com/thealgorithms/dynamicprogramming/WildcardMatchingTest.java b/src/test/java/com/thealgorithms/dynamicprogramming/WildcardMatchingTest.java index 8d91af663ec5..56cd4ffe7d44 100644 --- a/src/test/java/com/thealgorithms/dynamicprogramming/WildcardMatchingTest.java +++ b/src/test/java/com/thealgorithms/dynamicprogramming/WildcardMatchingTest.java @@ -1,5 +1,6 @@ package com.thealgorithms.dynamicprogramming; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/greedyalgorithms/ActivitySelectionTest.java b/src/test/java/com/thealgorithms/greedyalgorithms/ActivitySelectionTest.java index 42263ac1de8a..a997c198a39b 100644 --- a/src/test/java/com/thealgorithms/greedyalgorithms/ActivitySelectionTest.java +++ b/src/test/java/com/thealgorithms/greedyalgorithms/ActivitySelectionTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.greedyalgorithms; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; @@ -9,8 +9,8 @@ public class ActivitySelectionTest { @Test public void testActivitySelection() { - int start[] = {1, 3, 0, 5, 8, 5}; - int end[] = {2, 4, 6, 7, 9, 9}; + int[] start = {1, 3, 0, 5, 8, 5}; + int[] end = {2, 4, 6, 7, 9, 9}; ArrayList result = ActivitySelection.activitySelection(start, end); ArrayList expected = new ArrayList<>(Arrays.asList(0, 1, 3, 4)); @@ -20,8 +20,8 @@ public void testActivitySelection() { @Test public void testSingleActivity() { - int start[] = {1}; - int end[] = {2}; + int[] start = {1}; + int[] end = {2}; ArrayList result = ActivitySelection.activitySelection(start, end); ArrayList expected = new ArrayList<>(Arrays.asList(0)); @@ -31,8 +31,8 @@ public void testSingleActivity() { @Test public void testNoOverlap() { - int start[] = {1, 2, 3}; - int end[] = {2, 3, 4}; + int[] start = {1, 2, 3}; + int[] end = {2, 3, 4}; ArrayList result = ActivitySelection.activitySelection(start, end); ArrayList expected = new ArrayList<>(Arrays.asList(0, 1, 2)); diff --git a/src/test/java/com/thealgorithms/greedyalgorithms/FractionalKnapsackTest.java b/src/test/java/com/thealgorithms/greedyalgorithms/FractionalKnapsackTest.java index edbf0a09bcbd..34ec354ba6f0 100644 --- a/src/test/java/com/thealgorithms/greedyalgorithms/FractionalKnapsackTest.java +++ b/src/test/java/com/thealgorithms/greedyalgorithms/FractionalKnapsackTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.greedyalgorithms; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; @@ -8,24 +8,24 @@ public class FractionalKnapsackTest { @Test public void testFractionalKnapsackWithExampleCase() { - int weight[] = {10, 20, 30}; - int value[] = {60, 100, 120}; + int[] weight = {10, 20, 30}; + int[] value = {60, 100, 120}; int capacity = 50; assertEquals(240, FractionalKnapsack.fractionalKnapsack(weight, value, capacity)); } @Test public void testFractionalKnapsackWithZeroCapacity() { - int weight[] = {10, 20, 30}; - int value[] = {60, 100, 120}; + int[] weight = {10, 20, 30}; + int[] value = {60, 100, 120}; int capacity = 0; assertEquals(0, FractionalKnapsack.fractionalKnapsack(weight, value, capacity)); } @Test public void testFractionalKnapsackWithEmptyItems() { - int weight[] = {}; - int value[] = {}; + int[] weight = {}; + int[] value = {}; int capacity = 50; assertEquals(0, FractionalKnapsack.fractionalKnapsack(weight, value, capacity)); } diff --git a/src/test/java/com/thealgorithms/greedyalgorithms/JobSequencingTest.java b/src/test/java/com/thealgorithms/greedyalgorithms/JobSequencingTest.java index 8dd42bc7c5ec..b679121689a1 100644 --- a/src/test/java/com/thealgorithms/greedyalgorithms/JobSequencingTest.java +++ b/src/test/java/com/thealgorithms/greedyalgorithms/JobSequencingTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.greedyalgorithms; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Collections; diff --git a/src/test/java/com/thealgorithms/io/BufferedReaderTest.java b/src/test/java/com/thealgorithms/io/BufferedReaderTest.java index c9872980c3b7..baccf319d15e 100644 --- a/src/test/java/com/thealgorithms/io/BufferedReaderTest.java +++ b/src/test/java/com/thealgorithms/io/BufferedReaderTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.io; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.ByteArrayInputStream; import java.io.IOException; diff --git a/src/test/java/com/thealgorithms/maths/AreaTest.java b/src/test/java/com/thealgorithms/maths/AreaTest.java index 91fd03748163..b28afb85fbc3 100644 --- a/src/test/java/com/thealgorithms/maths/AreaTest.java +++ b/src/test/java/com/thealgorithms/maths/AreaTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/AutomorphicNumberTest.java b/src/test/java/com/thealgorithms/maths/AutomorphicNumberTest.java index 9571efff1a42..0a366cd1adbe 100644 --- a/src/test/java/com/thealgorithms/maths/AutomorphicNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/AutomorphicNumberTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/AverageTest.java b/src/test/java/com/thealgorithms/maths/AverageTest.java index 2008232c3b18..c5c751938f5d 100644 --- a/src/test/java/com/thealgorithms/maths/AverageTest.java +++ b/src/test/java/com/thealgorithms/maths/AverageTest.java @@ -8,25 +8,25 @@ public class AverageTest { private static final double SMALL_VALUE = 0.00001d; @Test - public void testAverage_double_12() { + public void testAverageDouble12() { double[] numbers = {3d, 6d, 9d, 12d, 15d, 18d, 21d}; Assertions.assertEquals(12d, Average.average(numbers), SMALL_VALUE); } @Test - public void testAverage_double_20() { + public void testAverageDouble20() { double[] numbers = {5d, 10d, 15d, 20d, 25d, 30d, 35d}; Assertions.assertEquals(20d, Average.average(numbers), SMALL_VALUE); } @Test - public void testAverage_double_4_5() { + public void testAverageDouble() { double[] numbers = {1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d}; Assertions.assertEquals(4.5d, Average.average(numbers), SMALL_VALUE); } @Test - public void testAverage_int_5() { + public void testAverageInt() { int[] numbers = {2, 4, 10}; Assertions.assertEquals(5, Average.average(numbers)); } diff --git a/src/test/java/com/thealgorithms/maths/CollatzConjectureTest.java b/src/test/java/com/thealgorithms/maths/CollatzConjectureTest.java index 118e8db8726d..4e88d1e91bac 100644 --- a/src/test/java/com/thealgorithms/maths/CollatzConjectureTest.java +++ b/src/test/java/com/thealgorithms/maths/CollatzConjectureTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.List; import org.junit.jupiter.api.BeforeAll; diff --git a/src/test/java/com/thealgorithms/maths/DudeneyNumberTest.java b/src/test/java/com/thealgorithms/maths/DudeneyNumberTest.java index 09c8c4b1cc94..cd93edfae61d 100644 --- a/src/test/java/com/thealgorithms/maths/DudeneyNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/DudeneyNumberTest.java @@ -1,17 +1,28 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; class DudeneyNumberTest { + @ParameterizedTest + @CsvSource({"1", "512", "4913", "5832", "17576", "19683"}) + void positiveDudeneyBase10Power3(final int n) { + assertTrue(DudeneyNumber.isDudeney(n)); + } - @Test - void isDudeney() { - final int validDudeneyNumber = 512; - final int invalidDudeneyNumber = 125; + @ParameterizedTest + @CsvSource({"2", "19", "21", "125", "27", "343", "729", "19682", "19684"}) + void negativeDudeneyBase10Power3(final int n) { + assertFalse(DudeneyNumber.isDudeney(n)); + } - assertTrue(() -> DudeneyNumber.isDudeney(validDudeneyNumber)); - assertFalse(() -> DudeneyNumber.isDudeney(invalidDudeneyNumber)); + @ParameterizedTest + @CsvSource({"0", "-1"}) + void throwsInputLessThanOne(final int n) { + assertThrows(IllegalArgumentException.class, () -> DudeneyNumber.isDudeney(n)); } } diff --git a/src/test/java/com/thealgorithms/maths/FFTTest.java b/src/test/java/com/thealgorithms/maths/FFTTest.java index dfb9ea532dee..696ab5a24732 100644 --- a/src/test/java/com/thealgorithms/maths/FFTTest.java +++ b/src/test/java/com/thealgorithms/maths/FFTTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import java.util.ArrayList; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/FactorialRecursionTest.java b/src/test/java/com/thealgorithms/maths/FactorialRecursionTest.java new file mode 100644 index 000000000000..db18b46356b4 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/FactorialRecursionTest.java @@ -0,0 +1,27 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class FactorialRecursionTest { + @ParameterizedTest + @MethodSource("inputStream") + void testFactorialRecursion(long expected, int number) { + assertEquals(expected, FactorialRecursion.factorial(number)); + } + + private static Stream inputStream() { + return Stream.of(Arguments.of(1, 0), Arguments.of(1, 1), Arguments.of(2, 2), Arguments.of(6, 3), Arguments.of(120, 5)); + } + + @Test + void testThrowsForNegativeInput() { + assertThrows(IllegalArgumentException.class, () -> FactorialRecursion.factorial(-1)); + } +} diff --git a/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java b/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java index 6e664f54307f..a3416a6bc871 100644 --- a/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java +++ b/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/HarshadNumberTest.java b/src/test/java/com/thealgorithms/maths/HarshadNumberTest.java index bea4e0a63d1f..af1c459f3d7f 100644 --- a/src/test/java/com/thealgorithms/maths/HarshadNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/HarshadNumberTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/KaprekarNumbersTest.java b/src/test/java/com/thealgorithms/maths/KaprekarNumbersTest.java index 52322e5558a9..05e58cf88e22 100644 --- a/src/test/java/com/thealgorithms/maths/KaprekarNumbersTest.java +++ b/src/test/java/com/thealgorithms/maths/KaprekarNumbersTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/LiouvilleLambdaFunctionTest.java b/src/test/java/com/thealgorithms/maths/LiouvilleLambdaFunctionTest.java index a2be8a4c4954..a2763047acf0 100644 --- a/src/test/java/com/thealgorithms/maths/LiouvilleLambdaFunctionTest.java +++ b/src/test/java/com/thealgorithms/maths/LiouvilleLambdaFunctionTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/LongDivisionTest.java b/src/test/java/com/thealgorithms/maths/LongDivisionTest.java index f0d702efa127..24f757f8f3ad 100644 --- a/src/test/java/com/thealgorithms/maths/LongDivisionTest.java +++ b/src/test/java/com/thealgorithms/maths/LongDivisionTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/MeansTest.java b/src/test/java/com/thealgorithms/maths/MeansTest.java index fa17cea68f7c..a1c07e25bea3 100644 --- a/src/test/java/com/thealgorithms/maths/MeansTest.java +++ b/src/test/java/com/thealgorithms/maths/MeansTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.ArrayList; import java.util.LinkedHashSet; diff --git a/src/test/java/com/thealgorithms/maths/MillerRabinPrimalityCheckTest.java b/src/test/java/com/thealgorithms/maths/MillerRabinPrimalityCheckTest.java index 6e6fd491b989..d547cecf24cd 100644 --- a/src/test/java/com/thealgorithms/maths/MillerRabinPrimalityCheckTest.java +++ b/src/test/java/com/thealgorithms/maths/MillerRabinPrimalityCheckTest.java @@ -1,30 +1,30 @@ package com.thealgorithms.maths; -import static com.thealgorithms.maths.MillerRabinPrimalityCheck.*; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; class MillerRabinPrimalityCheckTest { @Test void testDeterministicMillerRabinForPrimes() { - assertTrue(deterministicMillerRabin(2)); - assertTrue(deterministicMillerRabin(37)); - assertTrue(deterministicMillerRabin(123457)); - assertTrue(deterministicMillerRabin(6472601713L)); + assertTrue(MillerRabinPrimalityCheck.deterministicMillerRabin(2)); + assertTrue(MillerRabinPrimalityCheck.deterministicMillerRabin(37)); + assertTrue(MillerRabinPrimalityCheck.deterministicMillerRabin(123457)); + assertTrue(MillerRabinPrimalityCheck.deterministicMillerRabin(6472601713L)); } @Test void testDeterministicMillerRabinForNotPrimes() { - assertFalse(deterministicMillerRabin(1)); - assertFalse(deterministicMillerRabin(35)); - assertFalse(deterministicMillerRabin(123453)); - assertFalse(deterministicMillerRabin(647260175)); + assertFalse(MillerRabinPrimalityCheck.deterministicMillerRabin(1)); + assertFalse(MillerRabinPrimalityCheck.deterministicMillerRabin(35)); + assertFalse(MillerRabinPrimalityCheck.deterministicMillerRabin(123453)); + assertFalse(MillerRabinPrimalityCheck.deterministicMillerRabin(647260175)); } @Test void testMillerRabinForPrimes() { - assertTrue(millerRabin(11, 5)); - assertTrue(millerRabin(97, 5)); - assertTrue(millerRabin(6720589, 5)); - assertTrue(millerRabin(9549401549L, 5)); + assertTrue(MillerRabinPrimalityCheck.millerRabin(11, 5)); + assertTrue(MillerRabinPrimalityCheck.millerRabin(97, 5)); + assertTrue(MillerRabinPrimalityCheck.millerRabin(6720589, 5)); + assertTrue(MillerRabinPrimalityCheck.millerRabin(9549401549L, 5)); } } diff --git a/src/test/java/com/thealgorithms/maths/MobiusFunctionTest.java b/src/test/java/com/thealgorithms/maths/MobiusFunctionTest.java index ddfac15d8200..f3a6514ce633 100644 --- a/src/test/java/com/thealgorithms/maths/MobiusFunctionTest.java +++ b/src/test/java/com/thealgorithms/maths/MobiusFunctionTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/ModeTest.java b/src/test/java/com/thealgorithms/maths/ModeTest.java new file mode 100644 index 000000000000..629fd8bd580a --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/ModeTest.java @@ -0,0 +1,21 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class ModeTest { + @ParameterizedTest + @MethodSource("tcStream") + void basicTest(final int[] expected, final int[] numbers) { + assertArrayEquals(expected, Mode.mode(numbers)); + } + + private static Stream tcStream() { + return Stream.of(Arguments.of(null, new int[] {}), Arguments.of(new int[] {5}, new int[] {5}), Arguments.of(new int[] {1, 2, 3, 4, 5}, new int[] {1, 2, 3, 4, 5}), Arguments.of(new int[] {1, 2, 3, 4, 5}, new int[] {5, 4, 3, 2, 1}), + Arguments.of(new int[] {7}, new int[] {7, 9, 9, 4, 5, 6, 7, 7, 8}), Arguments.of(new int[] {7, 9}, new int[] {7, 9, 9, 4, 5, 6, 7, 7, 9})); + } +} diff --git a/src/test/java/com/thealgorithms/maths/NumberOfDigitsTest.java b/src/test/java/com/thealgorithms/maths/NumberOfDigitsTest.java new file mode 100644 index 000000000000..799052b22d83 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/NumberOfDigitsTest.java @@ -0,0 +1,39 @@ +package com.thealgorithms.maths; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.function.IntFunction; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class NumberOfDigitsTest { + + @ParameterizedTest + @MethodSource("testCases") + void testNumberOfDigits(final int expected, final int number, final IntFunction methodUnderTest) { + assertEquals(expected, methodUnderTest.apply(number)); + assertEquals(expected, methodUnderTest.apply(-number)); + } + + private static Stream testCases() { + final Integer[][] inputs = new Integer[][] { + {3, 100}, + {1, 0}, + {2, 12}, + {3, 123}, + {4, 1234}, + {5, 12345}, + {6, 123456}, + {7, 1234567}, + {8, 12345678}, + {9, 123456789}, + {9, 987654321}, + }; + + final IntFunction[] methods = new IntFunction[] {NumberOfDigits::numberOfDigits, NumberOfDigits::numberOfDigitsFast, NumberOfDigits::numberOfDigitsFaster, NumberOfDigits::numberOfDigitsRecursion}; + + return Stream.of(inputs).flatMap(input -> Stream.of(methods).map(method -> Arguments.of(input[0], input[1], method))); + } +} diff --git a/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java b/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java index 4f5ec4cef095..a1512aacb30d 100644 --- a/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java +++ b/src/test/java/com/thealgorithms/maths/PascalTriangleTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/PerfectNumberTest.java b/src/test/java/com/thealgorithms/maths/PerfectNumberTest.java index 4dc7c8ce53ad..0433ba80cfa4 100644 --- a/src/test/java/com/thealgorithms/maths/PerfectNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/PerfectNumberTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/PowerUsingRecursionTest.java b/src/test/java/com/thealgorithms/maths/PowerUsingRecursionTest.java index 14574ab3c1eb..705cc6672818 100644 --- a/src/test/java/com/thealgorithms/maths/PowerUsingRecursionTest.java +++ b/src/test/java/com/thealgorithms/maths/PowerUsingRecursionTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java b/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java index edc684481c2f..abe6068c2022 100644 --- a/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java +++ b/src/test/java/com/thealgorithms/maths/PrimeFactorizationTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/PronicNumberTest.java b/src/test/java/com/thealgorithms/maths/PronicNumberTest.java index e4ca04fd0403..5a31981bed5c 100644 --- a/src/test/java/com/thealgorithms/maths/PronicNumberTest.java +++ b/src/test/java/com/thealgorithms/maths/PronicNumberTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/PythagoreanTripleTest.java b/src/test/java/com/thealgorithms/maths/PythagoreanTripleTest.java index 2dc2643c5878..13ea58155dec 100644 --- a/src/test/java/com/thealgorithms/maths/PythagoreanTripleTest.java +++ b/src/test/java/com/thealgorithms/maths/PythagoreanTripleTest.java @@ -1,21 +1,22 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; public class PythagoreanTripleTest { @Test - public void Testpythagoreantriple() { - assertEquals(true, PythagoreanTriple.isPythagTriple(3, 4, 5)); - assertEquals(true, PythagoreanTriple.isPythagTriple(6, 8, 10)); - assertEquals(true, PythagoreanTriple.isPythagTriple(9, 12, 15)); - assertEquals(true, PythagoreanTriple.isPythagTriple(12, 16, 20)); - assertEquals(true, PythagoreanTriple.isPythagTriple(15, 20, 25)); - assertEquals(true, PythagoreanTriple.isPythagTriple(18, 24, 30)); - assertEquals(false, PythagoreanTriple.isPythagTriple(5, 20, 30)); - assertEquals(false, PythagoreanTriple.isPythagTriple(6, 8, 100)); - assertEquals(false, PythagoreanTriple.isPythagTriple(-2, -2, 2)); + public void testPythagoreanTriple() { + assertTrue(PythagoreanTriple.isPythagTriple(3, 4, 5)); + assertTrue(PythagoreanTriple.isPythagTriple(6, 8, 10)); + assertTrue(PythagoreanTriple.isPythagTriple(9, 12, 15)); + assertTrue(PythagoreanTriple.isPythagTriple(12, 16, 20)); + assertTrue(PythagoreanTriple.isPythagTriple(15, 20, 25)); + assertTrue(PythagoreanTriple.isPythagTriple(18, 24, 30)); + assertFalse(PythagoreanTriple.isPythagTriple(5, 20, 30)); + assertFalse(PythagoreanTriple.isPythagTriple(6, 8, 100)); + assertFalse(PythagoreanTriple.isPythagTriple(-2, -2, 2)); } } diff --git a/src/test/java/com/thealgorithms/maths/SquareRootwithBabylonianMethodTest.java b/src/test/java/com/thealgorithms/maths/SquareRootwithBabylonianMethodTest.java index 3d13e43665af..77446d30df32 100644 --- a/src/test/java/com/thealgorithms/maths/SquareRootwithBabylonianMethodTest.java +++ b/src/test/java/com/thealgorithms/maths/SquareRootwithBabylonianMethodTest.java @@ -7,21 +7,21 @@ public class SquareRootwithBabylonianMethodTest { @Test void testfor4() { - Assertions.assertEquals(2, SquareRootWithBabylonianMethod.square_Root(4)); + Assertions.assertEquals(2, SquareRootWithBabylonianMethod.squareRoot(4)); } @Test void testfor1() { - Assertions.assertEquals(1, SquareRootWithBabylonianMethod.square_Root(1)); + Assertions.assertEquals(1, SquareRootWithBabylonianMethod.squareRoot(1)); } @Test void testfor2() { - Assertions.assertEquals(1.4142135381698608, SquareRootWithBabylonianMethod.square_Root(2)); + Assertions.assertEquals(1.4142135381698608, SquareRootWithBabylonianMethod.squareRoot(2)); } @Test void testfor625() { - Assertions.assertEquals(25, SquareRootWithBabylonianMethod.square_Root(625)); + Assertions.assertEquals(25, SquareRootWithBabylonianMethod.squareRoot(625)); } } diff --git a/src/test/java/com/thealgorithms/maths/SumWithoutArithmeticOperatorsTest.java b/src/test/java/com/thealgorithms/maths/SumWithoutArithmeticOperatorsTest.java index 63f53bc6e0ba..1eab73c67642 100644 --- a/src/test/java/com/thealgorithms/maths/SumWithoutArithmeticOperatorsTest.java +++ b/src/test/java/com/thealgorithms/maths/SumWithoutArithmeticOperatorsTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/maths/VolumeTest.java b/src/test/java/com/thealgorithms/maths/VolumeTest.java index 9692246b6a91..1bdb3ae80040 100644 --- a/src/test/java/com/thealgorithms/maths/VolumeTest.java +++ b/src/test/java/com/thealgorithms/maths/VolumeTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.maths; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/misc/MapReduceTest.java b/src/test/java/com/thealgorithms/misc/MapReduceTest.java index 213acad9743b..c79c40701cc1 100644 --- a/src/test/java/com/thealgorithms/misc/MapReduceTest.java +++ b/src/test/java/com/thealgorithms/misc/MapReduceTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.misc; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/misc/MedianOfMatrixtest.java b/src/test/java/com/thealgorithms/misc/MedianOfMatrixtest.java index c1fa30d6a1cd..ec3a84b86c5b 100644 --- a/src/test/java/com/thealgorithms/misc/MedianOfMatrixtest.java +++ b/src/test/java/com/thealgorithms/misc/MedianOfMatrixtest.java @@ -1,6 +1,6 @@ package com.thealgorithms.misc; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java b/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java index 431d8daa2bab..355f107ddb61 100644 --- a/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java +++ b/src/test/java/com/thealgorithms/others/ArrayLeftRotationTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/others/ArrayRightRotation.java b/src/test/java/com/thealgorithms/others/ArrayRightRotation.java index a78ef81f32a4..11e4f44500b1 100644 --- a/src/test/java/com/thealgorithms/others/ArrayRightRotation.java +++ b/src/test/java/com/thealgorithms/others/ArrayRightRotation.java @@ -1,6 +1,8 @@ package com.thealgorithms.others; -public class ArrayRightRotation { +public final class ArrayRightRotation { + private ArrayRightRotation() { + } public static int[] rotateRight(int[] arr, int k) { if (arr == null || arr.length == 0 || k < 0) { throw new IllegalArgumentException("Invalid input"); diff --git a/src/test/java/com/thealgorithms/others/BestFitCPUTest.java b/src/test/java/com/thealgorithms/others/BestFitCPUTest.java index 0a82ebdf011f..296cf1ca1c04 100644 --- a/src/test/java/com/thealgorithms/others/BestFitCPUTest.java +++ b/src/test/java/com/thealgorithms/others/BestFitCPUTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/test/java/com/thealgorithms/others/CRC16Test.java b/src/test/java/com/thealgorithms/others/CRC16Test.java index 54e82f69aa88..bf309928bbf4 100644 --- a/src/test/java/com/thealgorithms/others/CRC16Test.java +++ b/src/test/java/com/thealgorithms/others/CRC16Test.java @@ -5,9 +5,6 @@ import org.junit.jupiter.api.Test; class CRC16Test { - - CRC16 crc = new CRC16(); - @Test void testCRC16() { // given diff --git a/src/test/java/com/thealgorithms/others/CountCharTest.java b/src/test/java/com/thealgorithms/others/CountCharTest.java index 55e55b8d52f4..382ba4246400 100644 --- a/src/test/java/com/thealgorithms/others/CountCharTest.java +++ b/src/test/java/com/thealgorithms/others/CountCharTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; @@ -11,6 +11,6 @@ void testCountCharacters() { String input = "12345"; int expectedValue = 5; - assertEquals(expectedValue, CountChar.CountCharacters(input)); + assertEquals(expectedValue, CountChar.countCharacters(input)); } } diff --git a/src/test/java/com/thealgorithms/others/CountFriendsPairingTest.java b/src/test/java/com/thealgorithms/others/CountFriendsPairingTest.java index 070812f114d8..f2e6944c06d2 100644 --- a/src/test/java/com/thealgorithms/others/CountFriendsPairingTest.java +++ b/src/test/java/com/thealgorithms/others/CountFriendsPairingTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.dynamicprogramming.CountFriendsPairing; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/others/FirstFitCPUTest.java b/src/test/java/com/thealgorithms/others/FirstFitCPUTest.java index b726a746d5ac..57b6e189b116 100644 --- a/src/test/java/com/thealgorithms/others/FirstFitCPUTest.java +++ b/src/test/java/com/thealgorithms/others/FirstFitCPUTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/test/java/com/thealgorithms/others/KadaneAlogrithmTest.java b/src/test/java/com/thealgorithms/others/KadaneAlogrithmTest.java index ac2aa9648c07..25b211657c5d 100644 --- a/src/test/java/com/thealgorithms/others/KadaneAlogrithmTest.java +++ b/src/test/java/com/thealgorithms/others/KadaneAlogrithmTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.dynamicprogramming.KadaneAlgorithm; import org.junit.jupiter.api.Test; @@ -10,48 +10,48 @@ public class KadaneAlogrithmTest { @Test void testForOneElement() { int[] a = {-1}; - assertTrue(KadaneAlgorithm.max_Sum(a, -1)); + assertTrue(KadaneAlgorithm.maxSum(a, -1)); } @Test void testForTwoElements() { int[] a = {-2, 1}; - assertTrue(KadaneAlgorithm.max_Sum(a, 1)); + assertTrue(KadaneAlgorithm.maxSum(a, 1)); } @Test void testForThreeElements() { int[] a = {5, 3, 12}; - assertTrue(KadaneAlgorithm.max_Sum(a, 20)); + assertTrue(KadaneAlgorithm.maxSum(a, 20)); } @Test void testForFourElements() { int[] a = {-1, -3, -7, -4}; - assertTrue(KadaneAlgorithm.max_Sum(a, -1)); + assertTrue(KadaneAlgorithm.maxSum(a, -1)); } @Test void testForFiveElements() { int[] a = {4, 5, 3, 0, 2}; - assertTrue(KadaneAlgorithm.max_Sum(a, 14)); + assertTrue(KadaneAlgorithm.maxSum(a, 14)); } @Test void testForSixElements() { int[] a = {-43, -45, 47, 12, 87, -13}; - assertTrue(KadaneAlgorithm.max_Sum(a, 146)); + assertTrue(KadaneAlgorithm.maxSum(a, 146)); } @Test void testForSevenElements() { int[] a = {9, 8, 2, 23, 13, 6, 7}; - assertTrue(KadaneAlgorithm.max_Sum(a, 68)); + assertTrue(KadaneAlgorithm.maxSum(a, 68)); } @Test void testForEightElements() { int[] a = {9, -5, -5, -2, 4, 5, 0, 1}; - assertTrue(KadaneAlgorithm.max_Sum(a, 10)); + assertTrue(KadaneAlgorithm.maxSum(a, 10)); } } diff --git a/src/test/java/com/thealgorithms/others/LineSweepTest.java b/src/test/java/com/thealgorithms/others/LineSweepTest.java index 20cf1cd75153..6bf6ef5b3002 100644 --- a/src/test/java/com/thealgorithms/others/LineSweepTest.java +++ b/src/test/java/com/thealgorithms/others/LineSweepTest.java @@ -1,5 +1,7 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; public class LineSweepTest { @@ -23,6 +25,6 @@ void testForOverlapWhenEndAEqualsStartBAndViceVersa() { @Test void testForMaximumEndPoint() { int[][] arr = {{10, 20}, {1, 100}, {14, 16}, {1, 8}}; - assertEquals(100, LineSweep.FindMaximumEndPoint(arr)); + assertEquals(100, LineSweep.findMaximumEndPoint(arr)); } } diff --git a/src/test/java/com/thealgorithms/others/LinkListSortTest.java b/src/test/java/com/thealgorithms/others/LinkListSortTest.java index e0e258aacd69..100593b1f756 100644 --- a/src/test/java/com/thealgorithms/others/LinkListSortTest.java +++ b/src/test/java/com/thealgorithms/others/LinkListSortTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.sorts.LinkListSort; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthKTest.java b/src/test/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthKTest.java index 49855161ec90..a8e168ffa13a 100644 --- a/src/test/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthKTest.java +++ b/src/test/java/com/thealgorithms/others/MaximumSumOfDistinctSubarraysWithLengthKTest.java @@ -1,32 +1,32 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class MaximumSumOfDistinctSubarraysWithLengthKTest { @Test - public void SampleTestCase1() { + public void sampleTestCase1() { assertEquals(15, MaximumSumOfDistinctSubarraysWithLengthK.maximumSubarraySum(3, 1, 5, 4, 2, 9, 9, 9)); } @Test - public void SampleTestCase2() { + public void sampleTestCase2() { assertEquals(0, MaximumSumOfDistinctSubarraysWithLengthK.maximumSubarraySum(3, 4, 4, 4)); } @Test - public void SampleTestCase3() { + public void sampleTestCase3() { assertEquals(12, MaximumSumOfDistinctSubarraysWithLengthK.maximumSubarraySum(3, 9, 9, 9, 1, 2, 3)); } @Test - public void EdgeCase1() { + public void edgeCase1() { assertEquals(0, MaximumSumOfDistinctSubarraysWithLengthK.maximumSubarraySum(0, 9, 9, 9)); } @Test - public void EdgeCase2() { + public void edgeCase2() { assertEquals(0, MaximumSumOfDistinctSubarraysWithLengthK.maximumSubarraySum(5, 9, 9, 9)); } } diff --git a/src/test/java/com/thealgorithms/others/NewManShanksPrimeTest.java b/src/test/java/com/thealgorithms/others/NewManShanksPrimeTest.java index 660562a5506e..3b657e441b1c 100644 --- a/src/test/java/com/thealgorithms/others/NewManShanksPrimeTest.java +++ b/src/test/java/com/thealgorithms/others/NewManShanksPrimeTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.dynamicprogramming.NewManShanksPrime; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/others/NextFitTest.java b/src/test/java/com/thealgorithms/others/NextFitTest.java index 2de6b411080c..75fb3ab7c261 100644 --- a/src/test/java/com/thealgorithms/others/NextFitTest.java +++ b/src/test/java/com/thealgorithms/others/NextFitTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/test/java/com/thealgorithms/others/PasswordGenTest.java b/src/test/java/com/thealgorithms/others/PasswordGenTest.java index aa5303ada239..57de329c8f09 100644 --- a/src/test/java/com/thealgorithms/others/PasswordGenTest.java +++ b/src/test/java/com/thealgorithms/others/PasswordGenTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/others/TestPrintMatrixInSpiralOrder.java b/src/test/java/com/thealgorithms/others/TestPrintMatrixInSpiralOrder.java index 6cc653670a21..986e72ea45b5 100644 --- a/src/test/java/com/thealgorithms/others/TestPrintMatrixInSpiralOrder.java +++ b/src/test/java/com/thealgorithms/others/TestPrintMatrixInSpiralOrder.java @@ -1,26 +1,26 @@ -package com.thealgorithms.others; - -import static org.junit.jupiter.api.Assertions.*; - -import java.util.List; -import org.junit.jupiter.api.Test; - -public class TestPrintMatrixInSpiralOrder { - @Test - public void testOne() { - int[][] matrix = {{3, 4, 5, 6, 7}, {8, 9, 10, 11, 12}, {14, 15, 16, 17, 18}, {23, 24, 25, 26, 27}, {30, 31, 32, 33, 34}}; - var printClass = new PrintAMatrixInSpiralOrder(); - List res = printClass.print(matrix, matrix.length, matrix[0].length); - List list = List.of(3, 4, 5, 6, 7, 12, 18, 27, 34, 33, 32, 31, 30, 23, 14, 8, 9, 10, 11, 17, 26, 25, 24, 15, 16); - assertIterableEquals(res, list); - } - - @Test - public void testTwo() { - int[][] matrix = {{2, 2}}; - var printClass = new PrintAMatrixInSpiralOrder(); - List res = printClass.print(matrix, matrix.length, matrix[0].length); - List list = List.of(2, 2); - assertIterableEquals(res, list); - } -} +package com.thealgorithms.others; + +import static org.junit.jupiter.api.Assertions.assertIterableEquals; + +import java.util.List; +import org.junit.jupiter.api.Test; + +public class TestPrintMatrixInSpiralOrder { + @Test + public void testOne() { + int[][] matrix = {{3, 4, 5, 6, 7}, {8, 9, 10, 11, 12}, {14, 15, 16, 17, 18}, {23, 24, 25, 26, 27}, {30, 31, 32, 33, 34}}; + var printClass = new PrintAMatrixInSpiralOrder(); + List res = printClass.print(matrix, matrix.length, matrix[0].length); + List list = List.of(3, 4, 5, 6, 7, 12, 18, 27, 34, 33, 32, 31, 30, 23, 14, 8, 9, 10, 11, 17, 26, 25, 24, 15, 16); + assertIterableEquals(res, list); + } + + @Test + public void testTwo() { + int[][] matrix = {{2, 2}}; + var printClass = new PrintAMatrixInSpiralOrder(); + List res = printClass.print(matrix, matrix.length, matrix[0].length); + List list = List.of(2, 2); + assertIterableEquals(res, list); + } +} diff --git a/src/test/java/com/thealgorithms/others/TwoPointersTest.java b/src/test/java/com/thealgorithms/others/TwoPointersTest.java index 8cadb031111b..e8fe41b0bdaf 100644 --- a/src/test/java/com/thealgorithms/others/TwoPointersTest.java +++ b/src/test/java/com/thealgorithms/others/TwoPointersTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; @@ -10,34 +11,34 @@ public class TwoPointersTest { void twoPointersFirstTestCase() { int[] arr = {2, 6, 9, 22, 121}; int key = 28; - assertEquals(true, TwoPointers.isPairedSum(arr, key)); + assertTrue(TwoPointers.isPairedSum(arr, key)); } @Test void twoPointersSecondTestCase() { int[] arr = {-1, -12, 12, 0, 8}; int key = 0; - assertEquals(true, TwoPointers.isPairedSum(arr, key)); + assertTrue(TwoPointers.isPairedSum(arr, key)); } @Test void twoPointersThirdTestCase() { int[] arr = {12, 35, 12, 152, 0}; int key = 13; - assertEquals(false, TwoPointers.isPairedSum(arr, key)); + assertFalse(TwoPointers.isPairedSum(arr, key)); } @Test void twoPointersFourthTestCase() { int[] arr = {-2, 5, -1, 52, 31}; int key = -3; - assertEquals(true, TwoPointers.isPairedSum(arr, key)); + assertTrue(TwoPointers.isPairedSum(arr, key)); } @Test void twoPointersFiftiethTestCase() { int[] arr = {25, 1, 0, 61, 21}; int key = 12; - assertEquals(false, TwoPointers.isPairedSum(arr, key)); + assertFalse(TwoPointers.isPairedSum(arr, key)); } } diff --git a/src/test/java/com/thealgorithms/others/WorstFitCPUTest.java b/src/test/java/com/thealgorithms/others/WorstFitCPUTest.java index 6f2a53b3dfe7..eb69f6056132 100644 --- a/src/test/java/com/thealgorithms/others/WorstFitCPUTest.java +++ b/src/test/java/com/thealgorithms/others/WorstFitCPUTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.others; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java b/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java index 5cb3c624db42..61e2a2ac2690 100644 --- a/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java +++ b/src/test/java/com/thealgorithms/scheduling/PreemptivePrioritySchedulingTest.java @@ -5,9 +5,11 @@ * @author [Bama Charan Chhandogi](https://www.github.com/BamaCharanChhandogi) */ -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.junit.jupiter.api.Test; class PreemptivePrioritySchedulingTest { diff --git a/src/test/java/com/thealgorithms/scheduling/RRSchedulingTest.java b/src/test/java/com/thealgorithms/scheduling/RRSchedulingTest.java index 700a174f328c..3da526601f5f 100644 --- a/src/test/java/com/thealgorithms/scheduling/RRSchedulingTest.java +++ b/src/test/java/com/thealgorithms/scheduling/RRSchedulingTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.scheduling; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import com.thealgorithms.devutils.entities.ProcessDetails; import java.util.ArrayList; diff --git a/src/test/java/com/thealgorithms/scheduling/SJFSchedulingTest.java b/src/test/java/com/thealgorithms/scheduling/SJFSchedulingTest.java index ae31feb9a6b4..aab5c64c847f 100644 --- a/src/test/java/com/thealgorithms/scheduling/SJFSchedulingTest.java +++ b/src/test/java/com/thealgorithms/scheduling/SJFSchedulingTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.scheduling; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.devutils.entities.ProcessDetails; import java.util.ArrayList; @@ -73,7 +74,7 @@ void scheduling() { } @Test - void schedulingOf_TwoProcesses() { + void schedulingOfTwoProcesses() { initialisation0(); SJFScheduling a = new SJFScheduling(process); a.scheduleProcesses(); @@ -82,7 +83,7 @@ void schedulingOf_TwoProcesses() { } @Test - void schedulingOfA_ShortestJobArrivingLast() { + void schedulingOfAShortestJobArrivingLast() { initialisation2(); SJFScheduling a = new SJFScheduling(process); a.scheduleProcesses(); @@ -91,7 +92,7 @@ void schedulingOfA_ShortestJobArrivingLast() { assertEquals("2", a.schedule.get(2)); } @Test - void scheduling_WithProcessesNotComingBackToBack() { + void schedulingWithProcessesNotComingBackToBack() { initialisation3(); SJFScheduling a = new SJFScheduling(process); a.scheduleProcesses(); @@ -100,7 +101,7 @@ void scheduling_WithProcessesNotComingBackToBack() { assertEquals("3", a.schedule.get(2)); } @Test - void schedulingOf_nothing() { + void schedulingOfNothing() { process = new ArrayList<>(); SJFScheduling a = new SJFScheduling(process); a.scheduleProcesses(); diff --git a/src/test/java/com/thealgorithms/scheduling/SRTFSchedulingTest.java b/src/test/java/com/thealgorithms/scheduling/SRTFSchedulingTest.java index 0cfe3d34f0ec..9cec31130164 100644 --- a/src/test/java/com/thealgorithms/scheduling/SRTFSchedulingTest.java +++ b/src/test/java/com/thealgorithms/scheduling/SRTFSchedulingTest.java @@ -19,7 +19,7 @@ public void initialization() { } @Test - public void Constructor() { + public void constructor() { initialization(); SRTFScheduling s = new SRTFScheduling(processes); assertEquals(3, s.processes.get(0).getBurstTime()); diff --git a/src/test/java/com/thealgorithms/searches/BinarySearch2dArrayTest.java b/src/test/java/com/thealgorithms/searches/BinarySearch2dArrayTest.java index e5db2f74f446..18f0afc6a0a6 100644 --- a/src/test/java/com/thealgorithms/searches/BinarySearch2dArrayTest.java +++ b/src/test/java/com/thealgorithms/searches/BinarySearch2dArrayTest.java @@ -3,18 +3,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import java.util.*; +import java.util.Arrays; import org.junit.jupiter.api.Test; public class BinarySearch2dArrayTest { @Test // valid test case - public void BinarySearch2dArrayTestMiddle() { + public void binarySearch2dArrayTestMiddle() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 6; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(1, ans[0]); assertEquals(1, ans[1]); @@ -22,11 +22,11 @@ public void BinarySearch2dArrayTestMiddle() { @Test // valid test case - public void BinarySearch2dArrayTestMiddleSide() { + public void binarySearch2dArrayTestMiddleSide() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 8; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(1, ans[0]); assertEquals(3, ans[1]); @@ -34,11 +34,11 @@ public void BinarySearch2dArrayTestMiddleSide() { @Test // valid test case - public void BinarySearch2dArrayTestUpper() { + public void binarySearch2dArrayTestUpper() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 2; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(0, ans[0]); assertEquals(1, ans[1]); @@ -46,11 +46,11 @@ public void BinarySearch2dArrayTestUpper() { @Test // valid test case - public void BinarySearch2dArrayTestUpperSide() { + public void binarySearch2dArrayTestUpperSide() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 1; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(0, ans[0]); assertEquals(0, ans[1]); @@ -58,11 +58,11 @@ public void BinarySearch2dArrayTestUpperSide() { @Test // valid test case - public void BinarySearch2dArrayTestLower() { + public void binarySearch2dArrayTestLower() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 10; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(2, ans[0]); assertEquals(1, ans[1]); @@ -70,11 +70,11 @@ public void BinarySearch2dArrayTestLower() { @Test // valid test case - public void BinarySearch2dArrayTestLowerSide() { + public void binarySearch2dArrayTestLowerSide() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 11; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(2, ans[0]); assertEquals(2, ans[1]); @@ -82,11 +82,11 @@ public void BinarySearch2dArrayTestLowerSide() { @Test // valid test case - public void BinarySearch2dArrayTestNotFound() { + public void binarySearch2dArrayTestNotFound() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 101; - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(-1, ans[0]); assertEquals(-1, ans[1]); @@ -96,13 +96,13 @@ public void BinarySearch2dArrayTestNotFound() { * Test if the method works with input arrays consisting only of one row. */ @Test - public void BinarySearch2dArrayTestOneRow() { + public void binarySearch2dArrayTestOneRow() { int[][] arr = {{1, 2, 3, 4}}; int target = 2; // Assert that the requirement, that the array only has one row, is fulfilled. assertEquals(arr.length, 1); - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(0, ans[0]); assertEquals(1, ans[1]); @@ -112,13 +112,13 @@ public void BinarySearch2dArrayTestOneRow() { * Test if the method works with the target in the middle of the input. */ @Test - public void BinarySearch2dArrayTestTargetInMiddle() { + public void binarySearch2dArrayTestTargetInMiddle() { int[][] arr = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}}; int target = 8; // Assert that the requirement, that the target is in the middle row and middle column, is // fulfilled. assertEquals(arr[arr.length / 2][arr[0].length / 2], target); - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(1, ans[0]); assertEquals(2, ans[1]); @@ -129,7 +129,7 @@ public void BinarySearch2dArrayTestTargetInMiddle() { * in the row above the middle row. */ @Test - public void BinarySearch2dArrayTestTargetAboveMiddleRowInMiddleColumn() { + public void binarySearch2dArrayTestTargetAboveMiddleRowInMiddleColumn() { int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int target = 3; @@ -137,7 +137,7 @@ public void BinarySearch2dArrayTestTargetAboveMiddleRowInMiddleColumn() { // in an array with an even number of columns, and on the row "above" the middle row. assertEquals(arr[0].length % 2, 0); assertEquals(arr[arr.length / 2 - 1][arr[0].length / 2], target); - int[] ans = BinarySearch2dArray.BinarySearch(arr, target); + int[] ans = BinarySearch2dArray.binarySearch(arr, target); System.out.println(Arrays.toString(ans)); assertEquals(0, ans[0]); assertEquals(2, ans[1]); @@ -147,11 +147,11 @@ public void BinarySearch2dArrayTestTargetAboveMiddleRowInMiddleColumn() { * Test if the method works with an empty array. */ @Test - public void BinarySearch2dArrayTestEmptyArray() { + public void binarySearch2dArrayTestEmptyArray() { int[][] arr = {}; int target = 5; // Assert that an empty array is not valid input for the method. - assertThrows(ArrayIndexOutOfBoundsException.class, () -> BinarySearch2dArray.BinarySearch(arr, target)); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> BinarySearch2dArray.binarySearch(arr, target)); } } diff --git a/src/test/java/com/thealgorithms/searches/BreadthFirstSearchTest.java b/src/test/java/com/thealgorithms/searches/BreadthFirstSearchTest.java index 77562ecdb87d..2a32a4ddb46c 100644 --- a/src/test/java/com/thealgorithms/searches/BreadthFirstSearchTest.java +++ b/src/test/java/com/thealgorithms/searches/BreadthFirstSearchTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.datastructures.Node; import java.util.List; diff --git a/src/test/java/com/thealgorithms/searches/DepthFirstSearchTest.java b/src/test/java/com/thealgorithms/searches/DepthFirstSearchTest.java index f85e94090d3f..af21b570fd7c 100644 --- a/src/test/java/com/thealgorithms/searches/DepthFirstSearchTest.java +++ b/src/test/java/com/thealgorithms/searches/DepthFirstSearchTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import com.thealgorithms.datastructures.Node; import java.util.List; diff --git a/src/test/java/com/thealgorithms/searches/HowManyTimesRotatedTest.java b/src/test/java/com/thealgorithms/searches/HowManyTimesRotatedTest.java index ac731b0f5dea..7d52e9fb4eca 100644 --- a/src/test/java/com/thealgorithms/searches/HowManyTimesRotatedTest.java +++ b/src/test/java/com/thealgorithms/searches/HowManyTimesRotatedTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/searches/KMPSearchTest.java b/src/test/java/com/thealgorithms/searches/KMPSearchTest.java index a0250ba34f5a..cb804ac6a6a3 100644 --- a/src/test/java/com/thealgorithms/searches/KMPSearchTest.java +++ b/src/test/java/com/thealgorithms/searches/KMPSearchTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; @@ -8,55 +8,55 @@ class KMPSearchTest { @Test // valid test case - public void KMPSearchTestLast() { + public void kmpSearchTestLast() { String txt = "ABABDABACDABABCABAB"; String pat = "ABABCABAB"; KMPSearch kmpSearch = new KMPSearch(); - int value = kmpSearch.KMPSearch(pat, txt); + int value = kmpSearch.kmpSearch(pat, txt); System.out.println(value); assertEquals(value, 10); } @Test // valid test case - public void KMPSearchTestFront() { + public void kmpSearchTestFront() { String txt = "AAAAABAAABA"; String pat = "AAAA"; KMPSearch kmpSearch = new KMPSearch(); - int value = kmpSearch.KMPSearch(pat, txt); + int value = kmpSearch.kmpSearch(pat, txt); System.out.println(value); assertEquals(value, 0); } @Test // valid test case - public void KMPSearchTestMiddle() { + public void kmpSearchTestMiddle() { String txt = "AAACAAAAAC"; String pat = "AAAA"; KMPSearch kmpSearch = new KMPSearch(); - int value = kmpSearch.KMPSearch(pat, txt); + int value = kmpSearch.kmpSearch(pat, txt); System.out.println(value); assertEquals(value, 4); } @Test // valid test case - public void KMPSearchTestNotFound() { + public void kmpSearchTestNotFound() { String txt = "AAABAAAA"; String pat = "AAAA"; KMPSearch kmpSearch = new KMPSearch(); - int value = kmpSearch.KMPSearch(pat, txt); + int value = kmpSearch.kmpSearch(pat, txt); System.out.println(value); assertEquals(value, 4); } @Test // not valid test case - public void KMPSearchTest4() { + public void kmpSearchTest4() { String txt = "AABAAA"; String pat = "AAAA"; KMPSearch kmpSearch = new KMPSearch(); - int value = kmpSearch.KMPSearch(pat, txt); + int value = kmpSearch.kmpSearch(pat, txt); System.out.println(value); assertEquals(value, -1); } diff --git a/src/test/java/com/thealgorithms/searches/OrderAgnosticBinarySearchTest.java b/src/test/java/com/thealgorithms/searches/OrderAgnosticBinarySearchTest.java index c19adaa1260c..03502eec00d1 100644 --- a/src/test/java/com/thealgorithms/searches/OrderAgnosticBinarySearchTest.java +++ b/src/test/java/com/thealgorithms/searches/OrderAgnosticBinarySearchTest.java @@ -7,9 +7,9 @@ public class OrderAgnosticBinarySearchTest { @Test // valid Test Case - public void ElementInMiddle() { + public void elementInMiddle() { int[] arr = {10, 20, 30, 40, 50}; - int answer = OrderAgnosticBinarySearch.BinSearchAlgo(arr, 0, arr.length - 1, 30); + int answer = OrderAgnosticBinarySearch.binSearchAlgo(arr, 0, arr.length - 1, 30); System.out.println(answer); int expected = 2; assertEquals(expected, answer); @@ -17,9 +17,9 @@ public void ElementInMiddle() { @Test // valid Test Case - public void RightHalfDescOrder() { + public void rightHalfDescOrder() { int[] arr = {50, 40, 30, 20, 10}; - int answer = OrderAgnosticBinarySearch.BinSearchAlgo(arr, 0, arr.length - 1, 10); + int answer = OrderAgnosticBinarySearch.binSearchAlgo(arr, 0, arr.length - 1, 10); System.out.println(answer); int expected = 4; assertEquals(expected, answer); @@ -27,9 +27,9 @@ public void RightHalfDescOrder() { @Test // valid test case - public void LeftHalfDescOrder() { + public void leftHalfDescOrder() { int[] arr = {50, 40, 30, 20, 10}; - int answer = OrderAgnosticBinarySearch.BinSearchAlgo(arr, 0, arr.length - 1, 50); + int answer = OrderAgnosticBinarySearch.binSearchAlgo(arr, 0, arr.length - 1, 50); System.out.println(answer); int expected = 0; assertEquals(expected, answer); @@ -37,9 +37,9 @@ public void LeftHalfDescOrder() { @Test // valid test case - public void RightHalfAscOrder() { + public void rightHalfAscOrder() { int[] arr = {10, 20, 30, 40, 50}; - int answer = OrderAgnosticBinarySearch.BinSearchAlgo(arr, 0, arr.length - 1, 50); + int answer = OrderAgnosticBinarySearch.binSearchAlgo(arr, 0, arr.length - 1, 50); System.out.println(answer); int expected = 4; assertEquals(expected, answer); @@ -47,9 +47,9 @@ public void RightHalfAscOrder() { @Test // valid test case - public void LeftHalfAscOrder() { + public void leftHalfAscOrder() { int[] arr = {10, 20, 30, 40, 50}; - int answer = OrderAgnosticBinarySearch.BinSearchAlgo(arr, 0, arr.length - 1, 10); + int answer = OrderAgnosticBinarySearch.binSearchAlgo(arr, 0, arr.length - 1, 10); System.out.println(answer); int expected = 0; assertEquals(expected, answer); @@ -57,9 +57,9 @@ public void LeftHalfAscOrder() { @Test // valid test case - public void ElementNotFound() { + public void elementNotFound() { int[] arr = {10, 20, 30, 40, 50}; - int answer = OrderAgnosticBinarySearch.BinSearchAlgo(arr, 0, arr.length - 1, 100); + int answer = OrderAgnosticBinarySearch.binSearchAlgo(arr, 0, arr.length - 1, 100); System.out.println(answer); int expected = -1; assertEquals(expected, answer); diff --git a/src/test/java/com/thealgorithms/searches/PerfectBinarySearchTest.java b/src/test/java/com/thealgorithms/searches/PerfectBinarySearchTest.java index ca5829c54495..6eab20f45467 100644 --- a/src/test/java/com/thealgorithms/searches/PerfectBinarySearchTest.java +++ b/src/test/java/com/thealgorithms/searches/PerfectBinarySearchTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/searches/QuickSelectTest.java b/src/test/java/com/thealgorithms/searches/QuickSelectTest.java index 405135ecad0d..dd04c85b76ae 100644 --- a/src/test/java/com/thealgorithms/searches/QuickSelectTest.java +++ b/src/test/java/com/thealgorithms/searches/QuickSelectTest.java @@ -1,8 +1,13 @@ package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; - -import java.util.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Random; import java.util.stream.Collectors; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/searches/RabinKarpAlgorithmTest.java b/src/test/java/com/thealgorithms/searches/RabinKarpAlgorithmTest.java index a8dc96e91998..40e1acce9c3a 100644 --- a/src/test/java/com/thealgorithms/searches/RabinKarpAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/searches/RabinKarpAlgorithmTest.java @@ -9,7 +9,7 @@ class RabinKarpAlgorithmTest { @ParameterizedTest @CsvSource({"This is an example for rabin karp algorithmn, algorithmn, 101", "AAABBDDG, AAA, 137", "AAABBCCBB, BBCC, 101", "AAABBCCBB, BBCC, 131", "AAAABBBBCCC, CCC, 41", "ABCBCBCAAB, AADB, 293", "Algorithm The Algorithm, Algorithm, 101"}) - void RabinKarpAlgorithmTestExample(String txt, String pat, int q) { + void rabinKarpAlgorithmTestExample(String txt, String pat, int q) { int indexFromOurAlgorithm = RabinKarpAlgorithm.search(pat, txt, q); int indexFromLinearSearch = txt.indexOf(pat); assertEquals(indexFromOurAlgorithm, indexFromLinearSearch); diff --git a/src/test/java/com/thealgorithms/searches/RecursiveBinarySearchTest.java b/src/test/java/com/thealgorithms/searches/RecursiveBinarySearchTest.java index 4144efa5e89b..0a2794f9e8d7 100644 --- a/src/test/java/com/thealgorithms/searches/RecursiveBinarySearchTest.java +++ b/src/test/java/com/thealgorithms/searches/RecursiveBinarySearchTest.java @@ -3,7 +3,7 @@ // Test file updated with JUnit tests package com.thealgorithms.searches; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; // Import the JUnit 5 Test annotation diff --git a/src/test/java/com/thealgorithms/searches/RowColumnWiseSorted2dArrayBinarySearchTest.java b/src/test/java/com/thealgorithms/searches/RowColumnWiseSorted2dArrayBinarySearchTest.java index e706a58fafbe..39ac5bf037ea 100644 --- a/src/test/java/com/thealgorithms/searches/RowColumnWiseSorted2dArrayBinarySearchTest.java +++ b/src/test/java/com/thealgorithms/searches/RowColumnWiseSorted2dArrayBinarySearchTest.java @@ -37,7 +37,7 @@ public void rowColumnSorted2dArrayBinarySearchTestSide() { } @Test - public void rowColumnSorted2dArray_BinarySearchTestUpper() { + public void rowColumnSorted2dArrayBinarySearchTestUpper() { Integer[][] arr = { {10, 20, 30, 40}, {15, 25, 35, 45}, @@ -52,7 +52,7 @@ public void rowColumnSorted2dArray_BinarySearchTestUpper() { } @Test - public void rowColumnSorted2dArray_BinarySearchTestUpperSide() { + public void rowColumnSorted2dArrayBinarySearchTestUpperSide() { Integer[][] arr = { {10, 20, 30, 40}, {15, 25, 35, 45}, @@ -67,7 +67,7 @@ public void rowColumnSorted2dArray_BinarySearchTestUpperSide() { } @Test - public void rowColumnSorted2dArray_BinarySearchTestLower() { + public void rowColumnSorted2dArrayBinarySearchTestLower() { Integer[][] arr = { {10, 20, 30, 40}, {15, 25, 35, 45}, @@ -82,7 +82,7 @@ public void rowColumnSorted2dArray_BinarySearchTestLower() { } @Test - public void rowColumnSorted2dArray_BinarySearchTestLowerSide() { + public void rowColumnSorted2dArrayBinarySearchTestLowerSide() { Integer[][] arr = { {10, 20, 30, 40}, {15, 25, 35, 45}, @@ -97,7 +97,7 @@ public void rowColumnSorted2dArray_BinarySearchTestLowerSide() { } @Test - public void rowColumnSorted2dArray_BinarySearchTestNotFound() { + public void rowColumnSorted2dArrayBinarySearchTestNotFound() { Integer[][] arr = { {10, 20, 30, 40}, {15, 25, 35, 45}, diff --git a/src/test/java/com/thealgorithms/searches/TestSearchInARowAndColWiseSortedMatrix.java b/src/test/java/com/thealgorithms/searches/TestSearchInARowAndColWiseSortedMatrix.java index 83e6562122ff..014fb4bd24af 100644 --- a/src/test/java/com/thealgorithms/searches/TestSearchInARowAndColWiseSortedMatrix.java +++ b/src/test/java/com/thealgorithms/searches/TestSearchInARowAndColWiseSortedMatrix.java @@ -1,27 +1,27 @@ -package com.thealgorithms.searches; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -public class TestSearchInARowAndColWiseSortedMatrix { - @Test - public void searchItem() { - int[][] matrix = {{3, 4, 5, 6, 7}, {8, 9, 10, 11, 12}, {14, 15, 16, 17, 18}, {23, 24, 25, 26, 27}, {30, 31, 32, 33, 34}}; - - var test = new SearchInARowAndColWiseSortedMatrix(); - int[] res = test.search(matrix, 16); - int[] expectedResult = {2, 2}; - assertArrayEquals(expectedResult, res); - } - - @Test - public void notFound() { - int[][] matrix = {{3, 4, 5, 6, 7}, {8, 9, 10, 11, 12}, {14, 15, 16, 17, 18}, {23, 24, 25, 26, 27}, {30, 31, 32, 33, 34}}; - - var test = new SearchInARowAndColWiseSortedMatrix(); - int[] res = test.search(matrix, 96); - int[] expectedResult = {-1, -1}; - assertArrayEquals(expectedResult, res); - } -} +package com.thealgorithms.searches; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import org.junit.jupiter.api.Test; + +public class TestSearchInARowAndColWiseSortedMatrix { + @Test + public void searchItem() { + int[][] matrix = {{3, 4, 5, 6, 7}, {8, 9, 10, 11, 12}, {14, 15, 16, 17, 18}, {23, 24, 25, 26, 27}, {30, 31, 32, 33, 34}}; + + var test = new SearchInARowAndColWiseSortedMatrix(); + int[] res = test.search(matrix, 16); + int[] expectedResult = {2, 2}; + assertArrayEquals(expectedResult, res); + } + + @Test + public void notFound() { + int[][] matrix = {{3, 4, 5, 6, 7}, {8, 9, 10, 11, 12}, {14, 15, 16, 17, 18}, {23, 24, 25, 26, 27}, {30, 31, 32, 33, 34}}; + + var test = new SearchInARowAndColWiseSortedMatrix(); + int[] res = test.search(matrix, 96); + int[] expectedResult = {-1, -1}; + assertArrayEquals(expectedResult, res); + } +} diff --git a/src/test/java/com/thealgorithms/sorts/BinaryInsertionSortTest.java b/src/test/java/com/thealgorithms/sorts/BinaryInsertionSortTest.java index 5261d6c64785..bdd0702942a2 100644 --- a/src/test/java/com/thealgorithms/sorts/BinaryInsertionSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/BinaryInsertionSortTest.java @@ -1,27 +1,27 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; class BinaryInsertionSortTest { - BinaryInsertionSort BIS = new BinaryInsertionSort(); + BinaryInsertionSort bis = new BinaryInsertionSort(); @Test // valid test case - public void BinaryInsertionSortTestNonDuplicate() { + public void binaryInsertionSortTestNonDuplicate() { int[] array = {1, 0, 2, 5, 3, 4, 9, 8, 10, 6, 7}; int[] expResult = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - int[] actResult = BIS.binaryInsertSort(array); + int[] actResult = bis.binaryInsertSort(array); assertArrayEquals(expResult, actResult); } @Test - public void BinaryInsertionSortTestDuplicate() { + public void binaryInsertionSortTestDuplicate() { int[] array = {1, 1, 1, 5, 9, 8, 7, 2, 6}; int[] expResult = {1, 1, 1, 2, 5, 6, 7, 8, 9}; - int[] actResult = BIS.binaryInsertSort(array); + int[] actResult = bis.binaryInsertSort(array); assertArrayEquals(expResult, actResult); } } diff --git a/src/test/java/com/thealgorithms/sorts/CircleSortTest.java b/src/test/java/com/thealgorithms/sorts/CircleSortTest.java new file mode 100644 index 000000000000..d113473272b7 --- /dev/null +++ b/src/test/java/com/thealgorithms/sorts/CircleSortTest.java @@ -0,0 +1,8 @@ +package com.thealgorithms.sorts; + +class CircleSortTest extends SortingAlgorithmTest { + @Override + SortAlgorithm getSortAlgorithm() { + return new CircleSort(); + } +} diff --git a/src/test/java/com/thealgorithms/sorts/DutchNationalFlagSortTest.java b/src/test/java/com/thealgorithms/sorts/DutchNationalFlagSortTest.java index 7c81aefc6d04..c7581e7c8f7b 100644 --- a/src/test/java/com/thealgorithms/sorts/DutchNationalFlagSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/DutchNationalFlagSortTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; @@ -11,7 +11,7 @@ public class DutchNationalFlagSortTest { 1 will be used as intended middle. Partitions on the result array: [ smaller than 1 , equal 1, greater than 1] */ - void DNFSTestOdd() { + void testOddDnfs() { Integer[] integers = {1, 3, 1, 4, 0}; Integer[] integersResult = {0, 1, 1, 4, 3}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -24,7 +24,7 @@ void DNFSTestOdd() { 3 will be used as intended middle. Partitions on the result array: [ smaller than 3 , equal 3, greater than 3] */ - void DNFSTestEven() { + void testEvenDnfs() { Integer[] integers = {8, 1, 3, 1, 4, 0}; Integer[] integersResult = {0, 1, 1, 3, 4, 8}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -37,7 +37,7 @@ void DNFSTestEven() { "b" will be used as intended middle. Partitions on the result array: [ smaller than b , equal b, greater than b] */ - void DNFSTestEvenStrings() { + void testEvenStringsDnfs() { String[] strings = {"a", "d", "b", "s", "e", "e"}; String[] stringsResult = {"a", "b", "s", "e", "e", "d"}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -50,7 +50,7 @@ void DNFSTestEvenStrings() { "b" will be used as intended middle. Partitions on the result array: [ smaller than b , equal b, greater than b] */ - void DNFSTestOddStrings() { + void testOddStringsDnfs() { String[] strings = {"a", "d", "b", "s", "e"}; String[] stringsResult = {"a", "b", "s", "e", "d"}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -63,7 +63,7 @@ void DNFSTestOddStrings() { 0 will be used as intended middle. Partitions on the result array: [ smaller than 0 , equal 0, greater than 0] */ - void DNFSTestOddMidGiven() { + void testOddMidGivenDnfs() { Integer[] integers = {1, 3, 1, 4, 0}; Integer[] integersResult = {0, 1, 4, 3, 1}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -76,7 +76,7 @@ void DNFSTestOddMidGiven() { 4 will be used as intended middle. Partitions on the result array: [ smaller than 4 , equal 4, greater than 4] */ - void DNFSTestEvenMidGiven() { + void testEvenMidGivenDnfs() { Integer[] integers = {8, 1, 3, 1, 4, 0}; Integer[] integersResult = {0, 1, 3, 1, 4, 8}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -89,7 +89,7 @@ void DNFSTestEvenMidGiven() { "s" will be used as intended middle. Partitions on the result array: [ smaller than s , equal s, greater than s] */ - void DNFSTestEvenStringsMidGiven() { + void testEvenStringsMidGivenDnfs() { String[] strings = {"a", "d", "b", "s", "e", "e"}; String[] stringsResult = {"a", "d", "b", "e", "e", "s"}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); @@ -102,7 +102,7 @@ void DNFSTestEvenStringsMidGiven() { "e" will be used as intended middle. Partitions on the result array: [ smaller than e , equal e, greater than e] */ - void DNFSTestOddStringsMidGiven() { + void testOddStringsMidGivenDnfs() { String[] strings = {"a", "d", "b", "s", "e"}; String[] stringsResult = {"a", "d", "b", "e", "s"}; DutchNationalFlagSort dutchNationalFlagSort = new DutchNationalFlagSort(); diff --git a/src/test/java/com/thealgorithms/sorts/InsertionSortTest.java b/src/test/java/com/thealgorithms/sorts/InsertionSortTest.java index 87a2c73384c3..78744973355d 100644 --- a/src/test/java/com/thealgorithms/sorts/InsertionSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/InsertionSortTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.function.Function; import org.junit.jupiter.api.BeforeEach; diff --git a/src/test/java/com/thealgorithms/sorts/IntrospectiveSortTest.java b/src/test/java/com/thealgorithms/sorts/IntrospectiveSortTest.java index 54179e12049c..a5c6905f7514 100644 --- a/src/test/java/com/thealgorithms/sorts/IntrospectiveSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/IntrospectiveSortTest.java @@ -8,7 +8,7 @@ public class IntrospectiveSortTest { @Test // valid test case - public void StrandSortNonDuplicateTest() { + public void strandSortNonDuplicateTest() { Integer[] expectedArray = {1, 2, 3, 4, 5}; Integer[] actualList = new IntrospectiveSort().sort(expectedArray); assertArrayEquals(expectedArray, actualList); @@ -16,7 +16,7 @@ public void StrandSortNonDuplicateTest() { @Test // valid test case - public void StrandSortDuplicateTest() { + public void strandSortDuplicateTest() { Integer[] expectedArray = {2, 2, 2, 5, 7}; Integer[] actualList = new IntrospectiveSort().sort(expectedArray); assertArrayEquals(expectedArray, actualList); @@ -24,7 +24,7 @@ public void StrandSortDuplicateTest() { @Test // valid test case - public void StrandSortEmptyTest() { + public void strandSortEmptyTest() { Integer[] expectedArray = {}; Integer[] actualList = new IntrospectiveSort().sort(expectedArray); assertArrayEquals(expectedArray, actualList); @@ -32,14 +32,14 @@ public void StrandSortEmptyTest() { @Test // valid test case - public void StrandSortNullTest() { + public void strandSortNullTest() { Integer[] expectedArray = null; assertThrows(NullPointerException.class, () -> { new IntrospectiveSort().sort(expectedArray); }); } @Test // valid test case - public void StrandSortNegativeTest() { + public void strandSortNegativeTest() { Integer[] expectedArray = {-1, -2, -3, -4, -5}; Integer[] actualList = new IntrospectiveSort().sort(expectedArray); assertArrayEquals(expectedArray, actualList); @@ -47,7 +47,7 @@ public void StrandSortNegativeTest() { @Test // valid test case - public void StrandSortNegativeAndPositiveTest() { + public void strandSortNegativeAndPositiveTest() { Integer[] expectedArray = {-1, -2, -3, 4, 5}; Integer[] actualList = new IntrospectiveSort().sort(expectedArray); assertArrayEquals(expectedArray, actualList); diff --git a/src/test/java/com/thealgorithms/sorts/SelectionSortTest.java b/src/test/java/com/thealgorithms/sorts/SelectionSortTest.java index 36470f86451d..83fbd1ece909 100644 --- a/src/test/java/com/thealgorithms/sorts/SelectionSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/SelectionSortTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import org.junit.jupiter.api.Test; @@ -8,7 +8,7 @@ class SelectionSortTest { @Test // valid test case - void IntegerArrTest() { + void integerArrTest() { Integer[] arr = {4, 23, 6, 78, 1, 54, 231, 9, 12}; SelectionSort selectionSort = new SelectionSort(); @@ -17,7 +17,7 @@ void IntegerArrTest() { @Test // valid test case - void StringArrTest() { + void stringArrTest() { String[] arr = {"c", "a", "e", "b", "d"}; SelectionSort selectionSort = new SelectionSort(); diff --git a/src/test/java/com/thealgorithms/sorts/ShellSortTest.java b/src/test/java/com/thealgorithms/sorts/ShellSortTest.java index cecc8d8bd581..73be91b397bd 100644 --- a/src/test/java/com/thealgorithms/sorts/ShellSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/ShellSortTest.java @@ -9,7 +9,7 @@ public class ShellSortTest { private ShellSort shellSort = new ShellSort(); @Test - public void ShellSortEmptyArray() { + public void shellSortEmptyArray() { Integer[] inputArray = {}; Integer[] outputArray = shellSort.sort(inputArray); Integer[] expectedOutput = {}; @@ -17,7 +17,7 @@ public void ShellSortEmptyArray() { } @Test - public void ShellSortSingleIntegerArray() { + public void shellSortSingleIntegerArray() { Integer[] inputArray = {4}; Integer[] outputArray = shellSort.sort(inputArray); Integer[] expectedOutput = {4}; @@ -25,7 +25,7 @@ public void ShellSortSingleIntegerArray() { } @Test - public void ShellSortSingleStringArray() { + public void shellSortSingleStringArray() { String[] inputArray = {"s"}; String[] outputArray = shellSort.sort(inputArray); String[] expectedOutput = {"s"}; @@ -33,7 +33,7 @@ public void ShellSortSingleStringArray() { } @Test - public void ShellSortNonDuplicateIntegerArray() { + public void shellSortNonDuplicateIntegerArray() { Integer[] inputArray = {6, -1, 99, 27, -15, 23, -36}; Integer[] outputArray = shellSort.sort(inputArray); Integer[] expectedOutput = {-36, -15, -1, 6, 23, 27, 99}; @@ -41,7 +41,7 @@ public void ShellSortNonDuplicateIntegerArray() { } @Test - public void ShellSortDuplicateIntegerArray() { + public void shellSortDuplicateIntegerArray() { Integer[] inputArray = {6, -1, 27, -15, 23, 27, -36, 23}; Integer[] outputArray = shellSort.sort(inputArray); Integer[] expectedOutput = {-36, -15, -1, 6, 23, 23, 27, 27}; @@ -49,7 +49,7 @@ public void ShellSortDuplicateIntegerArray() { } @Test - public void ShellSortNonDuplicateStringArray() { + public void shellSortNonDuplicateStringArray() { String[] inputArray = {"s", "b", "k", "a", "d", "c", "h"}; String[] outputArray = shellSort.sort(inputArray); String[] expectedOutput = {"a", "b", "c", "d", "h", "k", "s"}; @@ -57,7 +57,7 @@ public void ShellSortNonDuplicateStringArray() { } @Test - public void ShellSortDuplicateStringArray() { + public void shellSortDuplicateStringArray() { String[] inputArray = {"s", "b", "d", "a", "d", "c", "h", "b"}; String[] outputArray = shellSort.sort(inputArray); String[] expectedOutput = {"a", "b", "b", "c", "d", "d", "h", "s"}; diff --git a/src/test/java/com/thealgorithms/sorts/SortUtilsTest.java b/src/test/java/com/thealgorithms/sorts/SortUtilsTest.java index 34a6b00dd9a8..591b53891ee7 100644 --- a/src/test/java/com/thealgorithms/sorts/SortUtilsTest.java +++ b/src/test/java/com/thealgorithms/sorts/SortUtilsTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/sorts/SortingAlgorithmTest.java b/src/test/java/com/thealgorithms/sorts/SortingAlgorithmTest.java index 92e743cf220c..113bff2b5b0d 100644 --- a/src/test/java/com/thealgorithms/sorts/SortingAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/sorts/SortingAlgorithmTest.java @@ -1,6 +1,8 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.List; diff --git a/src/test/java/com/thealgorithms/sorts/StrandSortTest.java b/src/test/java/com/thealgorithms/sorts/StrandSortTest.java index 679a1131f53f..91e85c81e5ec 100644 --- a/src/test/java/com/thealgorithms/sorts/StrandSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/StrandSortTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import java.util.Arrays; import java.util.LinkedList; @@ -10,7 +10,7 @@ class StrandSortTest { @Test // valid test case - public void StrandSortNonDuplicateTest() { + public void strandSortNonDuplicateTest() { int[] expectedArray = {1, 2, 3, 4, 5}; LinkedList actualList = StrandSort.strandSort(new LinkedList(Arrays.asList(3, 1, 2, 4, 5))); int[] actualArray = new int[actualList.size()]; @@ -22,7 +22,7 @@ public void StrandSortNonDuplicateTest() { @Test // valid test case - public void StrandSortDuplicateTest() { + public void strandSortDuplicateTest() { int[] expectedArray = {2, 2, 2, 5, 7}; LinkedList actualList = StrandSort.strandSort(new LinkedList(Arrays.asList(7, 2, 2, 2, 5))); int[] actualArray = new int[actualList.size()]; diff --git a/src/test/java/com/thealgorithms/sorts/TopologicalSortTest.java b/src/test/java/com/thealgorithms/sorts/TopologicalSortTest.java index e299dad1276a..de115b458fe7 100644 --- a/src/test/java/com/thealgorithms/sorts/TopologicalSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/TopologicalSortTest.java @@ -1,8 +1,9 @@ package com.thealgorithms.sorts; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; -import com.thealgorithms.sorts.TopologicalSort.BackEdgeException; import com.thealgorithms.sorts.TopologicalSort.Graph; import java.util.LinkedList; import org.junit.jupiter.api.Test; @@ -53,7 +54,7 @@ public void failureTest() { graph.addEdge("6", "2"); graph.addEdge("7", ""); graph.addEdge("8", ""); - Exception exception = assertThrows(BackEdgeException.class, () -> TopologicalSort.sort(graph)); + Exception exception = assertThrows(RuntimeException.class, () -> TopologicalSort.sort(graph)); String expected = "This graph contains a cycle. No linear ordering is possible. " + "Back edge: 6 -> 2"; assertEquals(exception.getMessage(), expected); diff --git a/src/test/java/com/thealgorithms/sorts/WiggleSortTest.java b/src/test/java/com/thealgorithms/sorts/WiggleSortTest.java index 449c8c11ba78..c5d57d63cf38 100644 --- a/src/test/java/com/thealgorithms/sorts/WiggleSortTest.java +++ b/src/test/java/com/thealgorithms/sorts/WiggleSortTest.java @@ -8,7 +8,7 @@ public class WiggleSortTest { @Test - void WiggleTestNumbersEven() { + void wiggleTestNumbersEven() { WiggleSort wiggleSort = new WiggleSort(); Integer[] values = {1, 2, 3, 4}; Integer[] result = {1, 4, 2, 3}; @@ -17,7 +17,7 @@ void WiggleTestNumbersEven() { } @Test - void WiggleTestNumbersOdd() { + void wiggleTestNumbersOdd() { WiggleSort wiggleSort = new WiggleSort(); Integer[] values = {1, 2, 3, 4, 5}; Integer[] result = {3, 5, 1, 4, 2}; @@ -26,7 +26,7 @@ void WiggleTestNumbersOdd() { } @Test - void WiggleTestNumbersOddDuplicates() { + void wiggleTestNumbersOddDuplicates() { WiggleSort wiggleSort = new WiggleSort(); Integer[] values = {7, 2, 2, 2, 5}; Integer[] result = {2, 7, 2, 5, 2}; @@ -35,7 +35,7 @@ void WiggleTestNumbersOddDuplicates() { } @Test - void WiggleTestNumbersOddMultipleDuplicates() { + void wiggleTestNumbersOddMultipleDuplicates() { WiggleSort wiggleSort = new WiggleSort(); Integer[] values = {1, 1, 2, 2, 5}; Integer[] result = {2, 5, 1, 2, 1}; @@ -44,7 +44,7 @@ void WiggleTestNumbersOddMultipleDuplicates() { } @Test - void WiggleTestNumbersEvenMultipleDuplicates() { + void wiggleTestNumbersEvenMultipleDuplicates() { WiggleSort wiggleSort = new WiggleSort(); Integer[] values = {1, 1, 2, 2, 2, 5}; Integer[] result = {2, 5, 1, 2, 1, 2}; @@ -54,7 +54,7 @@ void WiggleTestNumbersEvenMultipleDuplicates() { } @Test - void WiggleTestNumbersEvenDuplicates() { + void wiggleTestNumbersEvenDuplicates() { WiggleSort wiggleSort = new WiggleSort(); Integer[] values = {1, 2, 4, 4}; Integer[] result = {1, 4, 2, 4}; @@ -63,7 +63,7 @@ void WiggleTestNumbersEvenDuplicates() { } @Test - void WiggleTestStrings() { + void wiggleTestStrings() { WiggleSort wiggleSort = new WiggleSort(); String[] values = {"a", "b", "d", "c"}; String[] result = {"a", "d", "b", "c"}; diff --git a/src/test/java/com/thealgorithms/stacks/StackPostfixNotationTest.java b/src/test/java/com/thealgorithms/stacks/StackPostfixNotationTest.java index 4857529e49a5..a8d8e0d3d9dc 100644 --- a/src/test/java/com/thealgorithms/stacks/StackPostfixNotationTest.java +++ b/src/test/java/com/thealgorithms/stacks/StackPostfixNotationTest.java @@ -1,7 +1,8 @@ package com.thealgorithms.stacks; import static java.util.Map.entry; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.Map; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java index 3d240f2c2bed..083239152ec2 100644 --- a/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java +++ b/src/test/java/com/thealgorithms/strings/AlphabeticalTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/AnagramsTest.java b/src/test/java/com/thealgorithms/strings/AnagramsTest.java index 2b56ef0172f9..ba530cffb017 100644 --- a/src/test/java/com/thealgorithms/strings/AnagramsTest.java +++ b/src/test/java/com/thealgorithms/strings/AnagramsTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/CharacterSameTest.java b/src/test/java/com/thealgorithms/strings/CharacterSameTest.java index e4faee25e84f..d91b5f2f55e9 100644 --- a/src/test/java/com/thealgorithms/strings/CharacterSameTest.java +++ b/src/test/java/com/thealgorithms/strings/CharacterSameTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/CheckVowelsTest.java b/src/test/java/com/thealgorithms/strings/CheckVowelsTest.java index 74918929f3c8..713b53f0b634 100644 --- a/src/test/java/com/thealgorithms/strings/CheckVowelsTest.java +++ b/src/test/java/com/thealgorithms/strings/CheckVowelsTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java b/src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java index f2faf49cfd3e..9649a89a3325 100644 --- a/src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java +++ b/src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/IsomorphicTest.java b/src/test/java/com/thealgorithms/strings/IsomorphicTest.java index a51b0fe9caa9..0dac47551868 100644 --- a/src/test/java/com/thealgorithms/strings/IsomorphicTest.java +++ b/src/test/java/com/thealgorithms/strings/IsomorphicTest.java @@ -1,10 +1,13 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -public class IsomorphicTest { +public final class IsomorphicTest { + private IsomorphicTest() { + } @Test public static void main(String[] args) { diff --git a/src/test/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumberTest.java b/src/test/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumberTest.java index c9b890f4d502..4ffbddcb44a8 100644 --- a/src/test/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumberTest.java +++ b/src/test/java/com/thealgorithms/strings/LetterCombinationsOfPhoneNumberTest.java @@ -1,8 +1,9 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; -import java.util.*; +import java.util.Arrays; +import java.util.List; import org.junit.jupiter.api.Test; public class LetterCombinationsOfPhoneNumberTest { diff --git a/src/test/java/com/thealgorithms/strings/LowerTest.java b/src/test/java/com/thealgorithms/strings/LowerTest.java index ebc72f3c7bfd..e0abb921a593 100644 --- a/src/test/java/com/thealgorithms/strings/LowerTest.java +++ b/src/test/java/com/thealgorithms/strings/LowerTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/MyAtoiTest.java b/src/test/java/com/thealgorithms/strings/MyAtoiTest.java index 6d27a8acb415..45f9158571e9 100644 --- a/src/test/java/com/thealgorithms/strings/MyAtoiTest.java +++ b/src/test/java/com/thealgorithms/strings/MyAtoiTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/PangramTest.java b/src/test/java/com/thealgorithms/strings/PangramTest.java index 7ad79b203b45..00ecb909b2de 100644 --- a/src/test/java/com/thealgorithms/strings/PangramTest.java +++ b/src/test/java/com/thealgorithms/strings/PangramTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/ReverseStringRecursiveTest.java b/src/test/java/com/thealgorithms/strings/ReverseStringRecursiveTest.java index af8d20ab9b7e..b33037f37cfd 100644 --- a/src/test/java/com/thealgorithms/strings/ReverseStringRecursiveTest.java +++ b/src/test/java/com/thealgorithms/strings/ReverseStringRecursiveTest.java @@ -5,8 +5,6 @@ import org.junit.jupiter.api.Test; public class ReverseStringRecursiveTest { - ReverseStringRecursive stringRecursive = new ReverseStringRecursive(); - @Test void shouldAcceptWhenEmptyStringIsPassed() { String expected = ""; diff --git a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java index 137ec7a949ab..e73f7afce8eb 100644 --- a/src/test/java/com/thealgorithms/strings/ReverseStringTest.java +++ b/src/test/java/com/thealgorithms/strings/ReverseStringTest.java @@ -7,7 +7,7 @@ public class ReverseStringTest { @Test - public void ReverseStringTest() { + public void testReverseString() { String input1 = "Hello World"; String input2 = "helloworld"; String input3 = "123456789"; diff --git a/src/test/java/com/thealgorithms/strings/RotationTest.java b/src/test/java/com/thealgorithms/strings/RotationTest.java index 239366df92b2..911ff87d29ad 100644 --- a/src/test/java/com/thealgorithms/strings/RotationTest.java +++ b/src/test/java/com/thealgorithms/strings/RotationTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/StringCompressionTest.java b/src/test/java/com/thealgorithms/strings/StringCompressionTest.java index 4194cad0b754..bbd56c19dc23 100644 --- a/src/test/java/com/thealgorithms/strings/StringCompressionTest.java +++ b/src/test/java/com/thealgorithms/strings/StringCompressionTest.java @@ -1,5 +1,5 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; diff --git a/src/test/java/com/thealgorithms/strings/UpperTest.java b/src/test/java/com/thealgorithms/strings/UpperTest.java index 5c030efdc740..5413c77b913a 100644 --- a/src/test/java/com/thealgorithms/strings/UpperTest.java +++ b/src/test/java/com/thealgorithms/strings/UpperTest.java @@ -1,6 +1,6 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/thealgorithms/strings/ValidParenthesesTest.java b/src/test/java/com/thealgorithms/strings/ValidParenthesesTest.java index 13909e636f5c..22deb4b14d3c 100644 --- a/src/test/java/com/thealgorithms/strings/ValidParenthesesTest.java +++ b/src/test/java/com/thealgorithms/strings/ValidParenthesesTest.java @@ -1,6 +1,7 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; @@ -8,16 +9,16 @@ public class ValidParenthesesTest { @Test void testOne() { - assertEquals(true, ValidParentheses.isValid("()")); + assertTrue(ValidParentheses.isValid("()")); } @Test void testTwo() { - assertEquals(true, ValidParentheses.isValid("()[]{}")); + assertTrue(ValidParentheses.isValid("()[]{}")); } @Test void testThree() { - assertEquals(false, ValidParentheses.isValid("(]")); + assertFalse(ValidParentheses.isValid("(]")); } } diff --git a/src/test/java/com/thealgorithms/strings/WordLadderTest.java b/src/test/java/com/thealgorithms/strings/WordLadderTest.java index 5b40df8b4d17..4f1d07ebdc4a 100644 --- a/src/test/java/com/thealgorithms/strings/WordLadderTest.java +++ b/src/test/java/com/thealgorithms/strings/WordLadderTest.java @@ -1,8 +1,9 @@ package com.thealgorithms.strings; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.*; +import java.util.Arrays; +import java.util.List; import org.junit.jupiter.api.Test; public class WordLadderTest {