forked from kevin-wayne/algs4
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
renames LRS to LongestRepeatedSubstring
- Loading branch information
1 parent
36a3b7a
commit 929f10c
Showing
4 changed files
with
157 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
/****************************************************************************** | ||
* Compilation: javac Accumulator.java | ||
* Execution: java Accumulator < input.txt | ||
* Dependencies: StdOut.java StdIn.java | ||
* | ||
* Mutable data type that calculates the mean, sample standard | ||
* deviation, and sample variance of a stream of real numbers | ||
* use a stable, one-pass algorithm. | ||
* | ||
******************************************************************************/ | ||
|
||
package edu.princeton.cs.algs4; | ||
|
||
|
||
/** | ||
* The <tt>Accumulator</tt> class is a data type for computing the running | ||
* mean, sample standard deviation, and sample variance of a stream of real | ||
* numbers. It provides an example of a mutable data type and a streaming | ||
* algorithm. | ||
* <p> | ||
* This implementation uses a one-pass algorithm that is less susceptible | ||
* to floating-point roundoff error than the more straightforward | ||
* implementation based on saving the sum of the squares of the numbers. | ||
* This technique is due to | ||
* <a href = "https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm">B. P. Welford</a>. | ||
* Each operation takes constant time in the worst case. | ||
* The amount of memory is constant - the data values are not stored. | ||
* <p> | ||
* For additional documentation, | ||
* see <a href="http://algs4.cs.princeton.edu/12oop">Section 1.2</a> of | ||
* <i>Algorithms, 4th Edition</i> by Robert Sedgewick and Kevin Wayne. | ||
* | ||
* @author Robert Sedgewick | ||
* @author Kevin Wayne | ||
*/ | ||
public class Accumulator { | ||
private int n = 0; // number of data values | ||
private double sum = 0.0; // sample variance * (n-1) | ||
private double mu = 0.0; // sample mean | ||
|
||
/** | ||
* Initializes an accumulator. | ||
*/ | ||
public Accumulator() { | ||
} | ||
|
||
/** | ||
* Adds the specified data value to the accumulator. | ||
* @param x the data value | ||
*/ | ||
public void addDataValue(double x) { | ||
n++; | ||
double delta = x - mu; | ||
mu += delta / n; | ||
sum += (double) (n - 1) / n * delta * delta; | ||
} | ||
|
||
/** | ||
* Returns the mean of the data values. | ||
* @return the mean of the data values | ||
*/ | ||
public double mean() { | ||
return mu; | ||
} | ||
|
||
/** | ||
* Returns the sample variance of the data values. | ||
* @return the sample variance of the data values | ||
*/ | ||
public double var() { | ||
return sum / (n - 1); | ||
} | ||
|
||
/** | ||
* Returns the sample standard deviation of the data values. | ||
* @return the sample standard deviation of the data values | ||
*/ | ||
public double stddev() { | ||
return Math.sqrt(this.var()); | ||
} | ||
|
||
/** | ||
* Returns the number of data values. | ||
* @return the number of data values | ||
*/ | ||
public int count() { | ||
return n; | ||
} | ||
|
||
/** | ||
* Unit tests the <tt>Accumulator</tt> data type. | ||
* Reads in a stream of real number from standard input; | ||
* adds them to the accumulator; and prints the mean, | ||
* sample standard deviation, and sample variance to standard | ||
* output. | ||
*/ | ||
public static void main(String[] args) { | ||
Accumulator stats = new Accumulator(); | ||
while (!StdIn.isEmpty()) { | ||
double x = StdIn.readDouble(); | ||
stats.addDataValue(x); | ||
} | ||
|
||
StdOut.printf("N = %d\n", stats.count()); | ||
StdOut.printf("mean = %.5f\n", stats.mean()); | ||
StdOut.printf("stddev = %.5f\n", stats.stddev()); | ||
StdOut.printf("var = %.5f\n", stats.var()); | ||
} | ||
} | ||
|
||
/****************************************************************************** | ||
* Copyright 2002-2015, Robert Sedgewick and Kevin Wayne. | ||
* | ||
* This file is part of algs4.jar, which accompanies the textbook | ||
* | ||
* Algorithms, 4th edition by Robert Sedgewick and Kevin Wayne, | ||
* Addison-Wesley Professional, 2011, ISBN 0-321-57351-X. | ||
* http://algs4.cs.princeton.edu | ||
* | ||
* | ||
* algs4.jar is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* algs4.jar is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with algs4.jar. If not, see http://www.gnu.org/licenses. | ||
******************************************************************************/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters