Program Design and Data Structures Essay Example
The focus of this report is hashing, a concept that is integral to data structure and algorithm. Lewis et al. (2019) describe hashing as an approach to data structures that inform map collections within a system. The hashing process compacts input of any length using an algorithm to a fixed-size string required to solve a problem. In this case, a hash function is necessary for the hashing process enabling the algorithm to convert a given key to a small number to an index found on a table known as the hash table (Lewis et al., 2019). Finally, Lewis et al. (2019) note that the hush function will determine the location of each element on the hash table. Overall, an expert should learn both hashing and binary tree processes and implement the most effective method to convert and compact more significant numbers to small ones that can fit the hash table.
Two assumptions about the order of the collection of elements should be considered when exploring the hushing concept. The first assumption depicts how an order is determined based on the process of adding and removing pieces from a collection (Lewis et al., 2019). The components in question include queues, indexed lists, stacks, and unordered (Lewis et al., 2019). Exploring the required order for removing or adding these features matters in determining the efficacy of the hashing process. Conversely, the other assumption for consideration is the comparison of values of the elements as integral to determining the order of the hashing process. This assumption informs how storage in the collection is achieved for binary trees or ordered lists.
Date Added: October 14, 2022
Hashing is not prone to problems. Lewis et al. (2019) identify collision as one of the significant issues experts faces when creating a hushing function. In this case, a collision occurs when two keys or elements should be located in the exact location of the table (Lewis et al., 2019). The above problem occurs when the names of these two elements begin with the same letter, such as “Ann” and “Andrew.” Therefore, experts must learn how to address these collisions to increase the effectiveness and demonstrate the credibility and reliability of the hashing process.
The other problem related to hashing is determining the size of the table. Designers rely on the information about the data set. In this case, if an expert in the hashing process gets the exact data set size, the individual can create a table the same size as the data set using a perfect hashing function (Lewis et al., 2019). Nonetheless, the lack of this information makes it challenging to create the ideal table. One way to solve this problem is to implement the rule of thumb that allows for creating the table but maintaining it at 150 percent of the size of the data set (Lewis et al., 2019).
The other problem for consideration when exploring hashing is dynamic resizing, which occurs when a person has no information about the size of the data set. Lewis et al. (2019) describe dynamic resizing as a strategy for creating or designing new hash tables more significant than the original size. Later, a person can insert the elements from the smaller table into the larger one and discard the original. Finally, mastering when to create the new table also matters in the dynamic resizing to avoid redoing the same process in the future, considering that the performance of elements degrades as the hash tables become full (Lewis et al., 2019).
Appendix 1 of the Java Foundations contains valuable information that can help experts in algorithms and data structures learn more about hashing. The authors use technical language affiliated with the subject. However, the authors ensure to define key terms to make it easier for the reader to understand them in depth. The writers also appeal to readers’ logic by using relatable examples. Overall, I recommend the text to people who want to learn more about hashing since it will be well written and contains vast information and knowledge affiliated with the hashing process.
Lewis, J., DePasquale, P., & Chase, J. (2019). Java Foundations: Introduction to program design and data structures. Pearson.