Quick Sort and Heap Sort
This commit is contained in:
parent
27a37037d1
commit
1af49ede8c
@ -21,27 +21,25 @@ def merge_sort_stepwise(z: MemoryArray, l: Literal = None, r: Literal = None, bu
|
||||
yield from merge(z, l, m, r, buffer)
|
||||
|
||||
def merge(z: MemoryArray, l: Literal, m: Literal, r: Literal, buffer: MemoryArray):
|
||||
i = MemoryCell(l)
|
||||
j = MemoryCell(m.succ())
|
||||
k = MemoryCell(l)
|
||||
while i <= m and j <= r:
|
||||
if z[i] <= z[j]:
|
||||
with MemoryCell(l) as i, MemoryCell(m.succ()) as j, MemoryCell(l) as k:
|
||||
while i <= m and j <= r:
|
||||
if z[i] <= z[j]:
|
||||
buffer[k].set(z[i])
|
||||
i = i.succ()
|
||||
else:
|
||||
buffer[k].set(z[j])
|
||||
j = j.succ()
|
||||
k = k.succ()
|
||||
while i <= m:
|
||||
buffer[k].set(z[i])
|
||||
i = i.succ()
|
||||
else:
|
||||
k = k.succ()
|
||||
while j <= r:
|
||||
buffer[k].set(z[j])
|
||||
j = j.succ()
|
||||
k = k.succ()
|
||||
while i <= m:
|
||||
buffer[k].set(z[i])
|
||||
i = i.succ()
|
||||
k = k.succ()
|
||||
while j <= r:
|
||||
buffer[k].set(z[j])
|
||||
j = j.succ()
|
||||
k = k.succ()
|
||||
for k in mrange(l, r.succ()):
|
||||
z[k].set(buffer[k])
|
||||
k = k.succ()
|
||||
for k in mrange(l, r.succ()):
|
||||
z[k].set(buffer[k])
|
||||
yield z
|
||||
|
||||
def merge_sort(z: MemoryArray):
|
||||
@ -51,7 +49,6 @@ def merge_sort(z: MemoryArray):
|
||||
next(sort_generator)
|
||||
except StopIteration:
|
||||
break
|
||||
# print(len(z), z.count_compares(), MemoryManager.get_instance().count_compares())
|
||||
|
||||
def sort_file(filename, sort_func):
|
||||
z = MemoryArray.create_array_from_file(filename)
|
||||
|
Loading…
x
Reference in New Issue
Block a user