[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]
-
[Honesty]
[On Teaching and Learning]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[SamR]
[Java 1.5 API]
[Espresso]
[TAO of Java]
[CS152 2004F]
Back to Reuse through Inheritance. On to Stacks and Their Implementation.
Held: Monday, March 7, 2005
Summary: Today we visit one of Java's core data structures: the array. We consider two applications of arrays in writing algorithms.
Overview:
Fraction classes allowed
you to group logical aspects of a Fraction into a whole.
type[] name = new type[size];
stuff,
you would write
double[] stuff = new double[5];
type[] name = { val1, val2, ..., valn }
;
int[] stuff = {3, 2, 6, 5};
name[index]
stuff with
stuff[3]
i held the value 3, then we could get
element 3 of the stuff with
stuff[i]
name.length
public double sum(double[] stuff) {
double total = 0; // The total of the numbers in stuff
int i; // A counter variable for stepping through
// the array
// Step through the array, adding each subsequent value
for(i = 0; i < stuff.length; i = i + 1) {
total = total + stuff[i];
}
// Return the total value
return total;
} // sum
public long fib(int n) {
if (n < 2)
return n;
else
return fib(n-1) + fib(n-2);
} // fib(int)
public long fibra(int n)
{
// Build a cache, use -1 for "I don't know."
int cache = new long[n+1];
cache[0] = 0;
cache[1] = 1;
for (int i = 2; i <= n; i++)
cache[i] = -1;
// Compute the nth number using the cache.
fibra_helper(n, cache);
} // fibra(int)
public long fibra_helper(int n, long[] cache)
{
// If the cache contains no value
if (cache[n] == -1)
// Compute it
cache[n] = fibra_helper(n-1, cache)
+ fibra_helper(n-2, cache);
// The cache must now return a value, so
// return it.
return cache[n];
} // fibra_helper
* Since each element of the array gets filled in once, this is a much faster algorithm.
* The idea of caching values is often called dynamic programming. It's one of the algorithm design strategies you'll often employ.
An Iterative Implementation
Back to Reuse through Inheritance. On to Stacks and Their Implementation.
[Skip to Body]
Primary:
[Front Door]
[Current]
[Glance]
-
[Honesty]
[On Teaching and Learning]
Groupings:
[EBoards]
[Examples]
[Exams]
[Handouts]
[Homework]
[Labs]
[Outlines]
[Readings]
[Reference]
Misc:
[SamR]
[Java 1.5 API]
[Espresso]
[TAO of Java]
[CS152 2004F]
Disclaimer:
I usually create these pages on the fly
, which means that I rarely
proofread them and they may contain bad grammar and incorrect details.
It also means that I tend to update them regularly (see the history for
more details). Feel free to contact me with any suggestions for changes.
This document was generated by
Siteweaver on Wed May 11 10:55:59 2005.
The source to the document was last modified on Mon Jan 24 10:17:07 2005.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS152/2005S/Outlines/outline.25.html.
You may wish to
validate this document's HTML
;
;
Check with Bobby