What will this program print?
class Foo { public virtual int xyz() => 5; } class Bar : Foo { public override int xyz() => 10; } class Top { static void Main() { Bar b = new Bar(); Foo f = b; Console.WriteLine(b.xyz()); Console.WriteLine(f.xyz()); } }
Write a method
string
[]
topWords(
string
filename,
int
n)
that reads a file and returns an array of the n most frequent words in the file, listed in descending order of frequency. A word is any sequence of non-whitespace characters; comparisons are case-sensitive. If the file has fewer than n distinct words, return an array of all words in the file. Use the C# collection classes.
The C# library includes a class HashSet<T>, based on a hash table, and a class SortedSet<T>, based on a balanced binary tree.
a) Suppose that we insert N random integers into each of these data structures. Which one do you think will be faster? Perform an experiment that compares the performance for various values of N. Draw a graph showing the results.
b) Now suppose that in each trial we insert N random integers, then remove all N integers. Compare the performance of the two data structures in this case.
c) Probably the class HashSet<T> rebuilds the hash table whenever its load factor exceeds a certain threshold. Design and perform an experiment to determine that threshold.