Advertisement
fghjtr

Untitled

Nov 22nd, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.37 KB | None | 0 0
  1. import uuid
  2.  
  3.  
  4. class My_dict:
  5.     def __init__(self, M):
  6.         self.M = M
  7.         self.table = [self.Linked_list() for i in range(M)]
  8.  
  9.     def put(self, key, value):
  10.         self.table[self.hashcode(key)].add(key, value)
  11.  
  12.     def hashcode(self, key):
  13.         return hash(key) % self.M
  14.  
  15.     def stat(self):
  16.         max_size = 0
  17.         for l in self.table:
  18.             if l.N > max_length:
  19.                 max_length = l.N
  20.         print("max bucket size is: %s" % max_size)
  21.  
  22.     class Linked_list:
  23.         def __init__(self):
  24.             self.first = None
  25.             self.N = 0
  26.  
  27.         def add(self, key, value):
  28.             cur = self.first
  29.             while cur is not None:
  30.                 if cur.key == key:
  31.                     cur.value = value
  32.                     return
  33.                 cur = cur.next
  34.             self.first = self.Node(key, value, self.first)
  35.             self.N += 1
  36.  
  37.         class Node:
  38.             def __init__(self, key, value, next_node):
  39.                 self.key = key
  40.                 self.value = value
  41.                 self.next = next_node
  42.  
  43.  
  44. for i in range(4, 20):
  45.     m = 1 << i
  46.     my_map = My_dict(m)
  47.     for j in range(int(0.75 * m)):
  48.         # u = uuid.uuid1()
  49.         # print(hash(u))
  50.         u = "".join(random.sample('zyxwvutsrqponmlkjihgfedcba0123456789/*-+!@#$%^&*', 5))
  51.         my_map.put(u, 0)
  52.     my_map.stat()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement