This code is for python Searching for Data In this lab we'll compare the time it takes to search for an item in a list vs searching for it in a binary search tree.   Part 1: Populating and...



This code is for python



Searching for Data


In this lab we'll compare the time it takes to search for an item in a list vs searching for it in a binary search tree.



Part 1: Populating and Searching a List


To get started create a function,populate, that takes as a parameter a positive integern,populates a list of lengthnwith random integers in the range of [0, n] and returns that list.


Next create a function that takes as a parameter a list and an integer and returns True if that integer is found in the list and False if it is not.


Finally, in your main script call your function for a value ofnto get a list of lengthn and then go through that list and look for each element in that list within the list and print out that count.  Needless to say if you did everything right you should print outn



Part 2: Populating and Searching a Binary Search Tree


Download the provided BST.py module.   This module is a stripped down implementation of a Binary Search Tree and associated Node class.


The BST class has the following public methods:



  • Constructor - Creates an empty binary search tree.

  • append(value) - Creates a Node with the valuevalue and inserts it into the BST.

  • isin(value) - Returns True ifvalueis found in a Node of the BST and False otherwise.


Change your main script so that yourpopulatefunction createsbotha list and a Binary Search Tree with the same randomnelements and returns them both.  In addition, change your main script so that with in looks for all the values of the list within the list, that it also counts how many times those values exist in the BST and prints that number out as well.



Part 3: Timing


Now let's time how long it takes to look for alln values within both the list and the BST!  To do this, first import the time module.  The time module has atime()function that returns the system time.  Get this value before checking the list for all the values and then again after you're done checking the list.  Print out the difference in these times.  Now do the same thing for searching the BST!



Part 4: Plotn vs. time


Finally onto the cool stuff!  In the previous parts you were asked to just use some arbitrary value ofn.Now let's do everything you did in Part 3 but for a range of values ofn.  In particular let's go fromn=1 ton=10,000 in steps of 1000.   Keep track of the times for each of these runs for searching both the list and the BST so that you can plot them!As a reminder, we can use the matplotlib library to help us plot.  So first import matplotlib.pyplot as plt.  If you cannot import this module, then you may need to install (pip) matplotlib.Then you can make use of the following methods:



  • plt.plot(xvals,yvals,label='text')  -  Adds a plot of xvals vs yvals to the current figure with a label saying 'text'.  Doing this several times superimposes the plots.

  • plt.legend() - This will "enable" the labels to be shown as a legend.

  • plt.show() - This displays the figure.


Finally, plotnvs average list search time andn vs average BST search time.



Attached is the BTS.py module




May 19, 2022
SOLUTION.PDF

Get Answer To This Question

Submit New Assignment

Copy and Paste Your Assignment Here