# 5.15. Discussion QuestionsΒΆ

Using the hash table performance formulas given in the chapter, compute the average number of comparisons necessary when the table is

- 10% full
- 25% full
- 50% full
- 75% full
- 90% full
- 99% full

At what point do you think the hash table is too small? Explain.

Modify the hash function for strings to use positional weightings.

We used a hash function for strings that weighted the characters by position. Devise an alternative weighting scheme. What are the biases that exist with these functions?

Research perfect hash functions. Using a list of names (classmates, family members, etc.), generate the hash values using the perfect hash algorithm.

Generate a random list of integers. Show how this list is sorted by the following algorithms:

- bubble sort
- selection sort
- insertion sort
- shell sort (you decide on the increments)
- merge sort
- quick sort (you decide on the pivot value)

Consider the following list of integers: [1,2,3,4,5,6,7,8,9,10]. Show how this list is sorted by the following algorithms:

- bubble sort
- selection sort
- insertion sort
- shell sort (you decide on the increments)
- merge sort
- quick sort (you decide on the pivot value)

Consider the following list of integers: [10,9,8,7,6,5,4,3,2,1]. Show how this list is sorted by the following algorithms:

- bubble sort
- selection sort
- insertion sort
- shell sort (you decide on the increments)
- merge sort
- quick sort (you decide on the pivot value)

Consider the list of characters: [

`'P','Y','T','H','O','N'`

]. Show how this list is sorted using the following algorithms:- bubble sort
- selection sort
- insertion sort
- shell sort (you decide on the increments)
- merge sort
- quick sort (you decide on the pivot value)

Devise alternative strategies for choosing the pivot value in quick sort. For example, pick the middle item. Re-implement the algorithm and then execute it on random data sets. Under what criteria does your new strategy perform better or worse than the strategy from this chapter?