Skip to content
Snippets Groups Projects
Commit 66a581a7 authored by Louis Chmielewski's avatar Louis Chmielewski
Browse files

merge_sort merge

parent 75cdce03
Branches
No related tags found
No related merge requests found
......@@ -161,20 +161,27 @@ def split(l: ApLst) -> tuple[ApLst, ApLst]:
$$$ all(k in l for k in l3)
True
"""
l1 = ApLst()
l2 = ApLst()
compteur = 0
while not l.is_empty():
if compteur % 2 == 0:
l1 = ApLst(l.head(), l1)
# l1 = ApLst()
# l2 = ApLst()
# compteur = 0
# while not l.is_empty():
# if compteur % 2 == 0:
# l1 = ApLst(l.head(), l1)
# else:
# l2 = ApLst(l.head(), l2)
# l = l.tail()
# compteur += 1
# return (l1, l2)
if not l.is_empty():
h1 = l.head()
if not l.tail().is_empty():
h2 = l.tail().head()
r1, r2 = split(l.tail().tail())
return ApLst(h1, r1), ApLst(h2, r2)
else:
l2 = ApLst(l.head(), l2)
l = l.tail()
compteur += 1
return (l1, l2)
return ApLst(h1,ApLst()),ApLst()
else:
return ApLst(), ApLst()
def merge(l1: ApLst, l2: ApLst,
comp: Callable[[T, T], int]=compare) -> ApLst:
......@@ -188,7 +195,43 @@ def merge(l1: ApLst, l2: ApLst,
$$$ list_to_native(merge(native_to_list([1, 3, 4, 9]), native_to_list([1, 2, 5])))
[1, 1, 2, 3, 4, 5, 9]
"""
...
if (not l1.is_empty()) and (not l2.is_empty()):
h1, h2 = l1.head(), l2.head()
if comp(h1, h2) <= 0:
res = ApLst(h1, merge(l1.tail(), l2))
else:
res = ApLst(h2, merge(l1, l2.tail()))
else:
if l1.is_empty():
res = l2
else:
res = l1
return res
# res = []
# if l1.is_empty() and l2.is_empty():
# return res
# elif l1.is_empty() and not l2.is_empty():
# res.append(l2.tail())
# elif not l1.is_empty() and l2.is_empty():
# res.append(l1.tail())
# else:
# l1 = l1.head()
# l2 = l2.head()
# if compare(l1, l2) < 0:
# res.append(l1)
# l1 = l1.tail()
# merge(l1, l2)
# elif compare(l1, l2) > 0:
# res.append(l2)
# l2 = l2.tail()
# merge(l1, l2)
# else:
# res.append(l1)
# res.append(l2)
# l1 = l1.tail()
# l2 = l2.tail()
# merge(l1, l2)
def mergesort(l: ApLst, comp: Callable[[T, T], int]=compare) -> ApLst:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment