From 8be4c6b8dbe76414984a9b02d30540f29d4dff9f Mon Sep 17 00:00:00 2001
From: Belkacemi Melissa <melissa.belkacemi.etu@118p29.fil.univ-lille.fr>
Date: Wed, 10 Apr 2024 11:38:28 +0200
Subject: [PATCH] merge et mergesort

---
 TP9/tri-fusion/merge_sort.py | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/TP9/tri-fusion/merge_sort.py b/TP9/tri-fusion/merge_sort.py
index 7dbe602..0c9e81d 100755
--- a/TP9/tri-fusion/merge_sort.py
+++ b/TP9/tri-fusion/merge_sort.py
@@ -166,15 +166,18 @@ 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() or l2.is_empty()):
-        if comp(l1.head(),l2.head())<0:
-            return ApLst(l1.head(),merge(l1.tail(),l2))
+    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:
-            return ApLst(l2.head(),merge(l1,l2.tail()))
-    elif not l1.is_empty():
-        return l1
-    elif  not l2.is_empty():
-        return l2
+            res= ApLst(h2,merge(l1,l2.tail()))
+    else:
+        if  l1.is_empty():
+            res= l2
+        else:
+            res= l1
+    return res
     
 def mergesort(l: ApLst, comp: Callable[[T, T], int]=compare) -> ApLst:
     """
@@ -194,7 +197,12 @@ def mergesort(l: ApLst, comp: Callable[[T, T], int]=compare) -> ApLst:
     $$$ is_sorted(l1)
     True
     """
-    ...
+    l1,l2=split(l)
+    if length(l)<=2:
+        return merge(l1,l2)
+    else:
+        return merge(mergesort(l1),mergesort(l2))
+       
 
 
 if (__name__ == '__main__'):
-- 
GitLab