From 8deb6d32239210abb0ee88b86fc7550e7686ba2d Mon Sep 17 00:00:00 2001 From: Dahmane Lynda <lynda.dahmane.etu@115p17.fil.univ-lille.fr> Date: Thu, 11 Apr 2024 13:51:34 +0200 Subject: [PATCH] tris-fusion --- Tp9/tri-fusion.zip | Bin 0 -> 5849 bytes Tp9/tri-fusion/merge_sort.py | 19 ++++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 Tp9/tri-fusion.zip diff --git a/Tp9/tri-fusion.zip b/Tp9/tri-fusion.zip new file mode 100644 index 0000000000000000000000000000000000000000..213bf6afce46009d00a347818b101145210f10bc GIT binary patch literal 5849 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 GK|BETsDJJN literal 0 HcmV?d00001 diff --git a/Tp9/tri-fusion/merge_sort.py b/Tp9/tri-fusion/merge_sort.py index bd14992..18fd323 100755 --- a/Tp9/tri-fusion/merge_sort.py +++ b/Tp9/tri-fusion/merge_sort.py @@ -122,7 +122,18 @@ def is_sorted(l: ApLst, comp: Callable[[T, T], int]=compare) -> bool: $$$ is_sorted(native_to_list([1, 2, 4, 3])) False """ - ... + if l.is_empty(): + return True + else: + if l.tail().is_empty(): + return True + else: + + if comp(l.head(), l.tail().head())>0: + + return False + else: + return is_sorted(l.tail(), comp) def split(l: ApLst) -> tuple[ApLst, ApLst]: @@ -141,8 +152,7 @@ def split(l: ApLst) -> tuple[ApLst, ApLst]: $$$ all(k in l for k in l3) True """ - ... - + def merge(l1: ApLst, l2: ApLst, comp: Callable[[T, T], int]=compare) -> ApLst: @@ -156,8 +166,7 @@ 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] """ - ... - + def mergesort(l: ApLst, comp: Callable[[T, T], int]=compare) -> ApLst: """ -- GitLab