import random random.seed = 1 class array:     def __init__(self, valuelist):         self.atos = valuelist.copy() # this variable is the array that holds the data     def additem(self, value):         # adds a item to the array         self.atos.append(value)          def printarray(self):         # prints the self.atos         print(self.atos)          def __contains__(self, key):         # To test the binary search change the "__linearsearch" to "__binsearch"         return self.__binsearch(key)     def __linearsearch(self, key):         # Implements the linear search to find an item in the array         for item in self.atos:             if item == key:                 return True         return False          def __binsearch(self, key):         temp = sorted(self.atos)         # Implements the binary search to find an item in the array temp. This implements an iterative bin search algorithm.         low = 0         high = len(temp) - 1         while low <= high:             mid = (low + high) // 2             if temp[mid] == key:                 return True             elif temp[mid] > key:                 high = mid - 1             else:                 low = mid + 1         return False     def maximum(self):         return self.__findksmallest(len(self.atos))     def minimum(self):         return self.__findksmallest(1)     def __findksmallest(self, k):         # Implements the selection algorithm         temp = self.atos[:]         return self.__select(temp, 0, len(temp) - 1, k - 1)          def __select(self, arr, l, r, k):         if l == r:             return arr[l]         pivot = self.__partition(arr, l, r)         if k == pivot:             return arr[pivot]         elif k < pivot:             return self.__select(arr, l, pivot - 1, k)         else:             return self.__select(arr, pivot + 1, r, k)     def __partition(self, arr, l, r):         x = arr[r]         i = l         for j in range(l, r):             if arr[j] <= x:                 arr[j], arr[i] = arr[i], arr[j]                 i += 1         arr[i], arr[r] = arr[r], arr[i]

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

can you explain the code with comments

import random
random.seed = 1
class array:
    def __init__(self, valuelist):
        self.atos = valuelist.copy() # this variable is the array that holds the data

    def additem(self, value):
        # adds a item to the array
        self.atos.append(value)
    
    def printarray(self):
        # prints the self.atos
        print(self.atos)
    
    def __contains__(self, key):
        # To test the binary search change the "__linearsearch" to "__binsearch"
        return self.__binsearch(key)

    def __linearsearch(self, key):
        # Implements the linear search to find an item in the array
        for item in self.atos:
            if item == key:
                return True
        return False
    
    def __binsearch(self, key):
        temp = sorted(self.atos)
        # Implements the binary search to find an item in the array temp. This implements an iterative bin search algorithm.
        low = 0
        high = len(temp) - 1
        while low <= high:
            mid = (low + high) // 2
            if temp[mid] == key:
                return True
            elif temp[mid] > key:
                high = mid - 1
            else:
                low = mid + 1
        return False

    def maximum(self):
        return self.__findksmallest(len(self.atos))

    def minimum(self):
        return self.__findksmallest(1)


    def __findksmallest(self, k):
        # Implements the selection algorithm
        temp = self.atos[:]
        return self.__select(temp, 0, len(temp) - 1, k - 1)
    
    def __select(self, arr, l, r, k):
        if l == r:
            return arr[l]
        pivot = self.__partition(arr, l, r)
        if k == pivot:
            return arr[pivot]
        elif k < pivot:
            return self.__select(arr, l, pivot - 1, k)
        else:
            return self.__select(arr, pivot + 1, r, k)

    def __partition(self, arr, l, r):
        x = arr[r]
        i = l
        for j in range(l, r):
            if arr[j] <= x:
                arr[j], arr[i] = arr[i], arr[j]
                i += 1
        arr[i], arr[r] = arr[r], arr[i]
        return i

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Array
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education