# Data Sturctures week 5

As you are working on finalizing the code for your solution, you are thinking that a B-Tree might be an elegant solution for the sorting and search algorithms. In order though to implement the solution in the most elegant fashion the use of recursion will be needed. You approach others in your department about the possibility of using recursion, and a few of them are not familiar with how it works. Describe recursion and give sample code to implement the Fibonacci Series. This should go in the Design Document.

Based on the feedback you received from the alpha test, now is your chance to modify your program as needed and submit it for final testing and implementation. Enhance your program to incorporate the relevant feedback you have received, and add one additional sort routine for your final design. Your design should include the following:

High Level Implementation Instructions:

• Sorted using Insertion sort
• Hash bucket of size 5 with a collision solution using a linked list (no need to order)
• A Search Algorithm based on ID and Contributor Name.
• The Contributor Name Algorithm needs to be implemented using the Sequential Search
• An additional Search algorithm based on a Binary Search of the Contributor’s Name (this will include an additional Sorted Array of the contributor’s name)

Each contributor will have the following information:

• Name:String; //the name of the contributor
• City:String; //the city in which the contributor lives
• Country:String; //the country in which the contributor lives
• Phone:String; //the phone number for the contributor
• Contribution:Double; //the amount of the contribution given by the contributor to the zoo
• ID: Integer; //identifier key for future needs

Contributor functions/methods:

• Input constructor: //to accept a string for the name and additional information for each contributor (this should call the Add constructor to implement the sorted list)
• Print constructor: //to print out the contributor data
• Print All constructor: //to print the entire list of contributor names
• Add constructor: //to traverse the Linked list and find the proper location for adding the instance
• Search constructor: //the Search algorithm to implement is Sequential Search
• An additional Search algorithm based on a Binary Search of the Contributor’s Name (this will include an additional Sorted Array of the contributor’s name)

Each hash bucket collision item will have the following information:

• ID:Integer; //identifier key for future needs
• Contributor Address: Pointer; //a pointer to the address of the contributor instance in the sorted linked list

Hash bucket functions/methods:

• Input constructor: //to accept a string for the name and additional information for each contributor (you will only need the ID portion of the input data)
• Hash Function constructor: //Hint: You only have 5 Hash buckets so the function can be very a simple calculation
• Pop constructor
• Push constructor
• Print constructor: //to show the information of the contributor based on a given ID

Deliverables:

• The design document that includes the recursion example.
• A fully documented program to load the data creating a sorted linked list.
• A test plan to show how the program runs and can be executed
• A screenshot showing that the program loaded the data, and after all data is loaded perform the following:
• Print All showing the sorted list.
• Contributor information for Georg Pipps
• Contributor information for ID 25
• An analysis of the differences in performance of the Sequential Search versus the Binary Search