-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBucket.py
More file actions
41 lines (31 loc) · 1.06 KB
/
Bucket.py
File metadata and controls
41 lines (31 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import os
from LinkedList import Node
class Bucket(object):
def sort(self, values):
n = len(values) * 2
m = self.__get_prime_number(n)
bucket = [None] * n
# insert into value list
for value in values:
key = value % m
new_node = Node(value)
if bucket[key] is None:
bucket[key] = new_node
else:
node = bucket[key]
while node.succ_node is not None:
node = node.succ_node
node.succ_node = new_node
new_node.pred_node = node
# get sorted values
sorted_values = []
for item in bucket:
if item is None:
continue
node = item
while node is not None:
sorted_values.append(node.data)
node = node.succ_node
return sorted_values
def __get_prime_number(self, n):
return int(open(os.path.dirname(os.path.abspath(__file__)) + '/prime_number.txt').read().split(',')[n])