3
3
4
4
test = False
5
5
6
+
6
7
class Array :
7
8
8
9
full_array = None
@@ -18,17 +19,18 @@ def set_all(self, values):
18
19
Array .full_array [self .lower_index + i ] = values [i ]
19
20
self .plot ()
20
21
21
- def __init__ (self , values , lower_index = 0 , higher_index = - 1 ):
22
+ def __init__ (self , values , lower_index = 0 ):
22
23
self .lower_index = lower_index
23
- self .higher_index = len (values ) if higher_index == - 1 else higher_index
24
24
self .values = list (values )
25
25
26
26
if Array .full_array == None :
27
27
Array .full_array = list (values )
28
+ self .plot ()
28
29
29
30
def swap (self , index1 , index2 ):
30
31
self .values [index2 ], self .values [index1 ] = self .values [index1 ], self .values [index2 ]
31
- Array .full_array [self .lower_index + index2 ], Array .full_array [self .lower_index + index1 ] = Array .full_array [self .lower_index + index1 ], Array .full_array [self .lower_index + index2 ]
32
+ Array .full_array [self .lower_index + index2 ], Array .full_array [self .lower_index +
33
+ index1 ] = Array .full_array [self .lower_index + index1 ], Array .full_array [self .lower_index + index2 ]
32
34
self .plot ()
33
35
34
36
def set (self , index , num ):
@@ -121,9 +123,7 @@ def heapify(nums, heap_size, root_index):
121
123
heapify (nums , i , 0 )
122
124
123
125
124
- def merge_sort (nums , lower_index = 0 , higher_index = - 1 ): # n * logn
125
- if higher_index == - 1 :
126
- higher_index = lower_index + nums .get_len ()
126
+ def merge_sort (nums , lower_index = 0 ): # n * logn
127
127
def merge (left_list , right_list ):
128
128
sorted_list = []
129
129
left_list_index = right_list_index = 0
@@ -166,14 +166,14 @@ def merge(left_list, right_list):
166
166
mid = nums .get_len () // 2
167
167
168
168
# Sort and merge each half
169
- left_list = merge_sort (Array (nums .values [:mid ], lower_index , mid ))
170
- right_list = merge_sort (Array (nums .values [mid :], mid , nums . get_len ()) , mid , nums . get_len () )
169
+ left_list = merge_sort (Array (nums .values [:mid ], lower_index ))
170
+ right_list = merge_sort (Array (nums .values [mid :], mid ) , mid )
171
171
172
172
nums .set_all (left_list + right_list )
173
173
174
174
# Merge the sorted lists into a new one
175
175
sorted_list = merge (left_list , right_list )
176
-
176
+
177
177
nums .set_all (sorted_list )
178
178
return sorted_list
179
179
0 commit comments