Questions / réponses

merge_sort

merge_sort

de Maxime Denis -
Número de respuestas: 1

Bonjour,

sur emacs, mais fonctions merge et merge_sort  marchent sur emacs, mais sur moodle j'ai comme erreur  "*** Test échoué, essayez à nouveau ***".  Je ne comprends pas pourquoi.

Voici mes fonctions:

let rec merge l1 l2 = 
    match (l1,l2) with
        ([],[])-> []
        |(hd::qu,[])->hd:: (merge qu [])
        |([],hd::qu)->hd:: (merge qu [])
        |(hd::tl,te::qu)->  if hd <= te
                            then hd:: (merge tl l2)
                            else te:: (merge l1 qu)
                           
let rec  merge_sort l =
  match ( split l) with
    ([],[])-> failwith "erreur"
  |(l1,l2)->if (List.length l1) == 1 && (List.length l2) ==1
            then (merge l1 l2)
            else
              if (List.length l1) == 1
              then merge l1 (merge_sort l2)
              else
                if (List.length l2) == 1
                then merge l2 ( merge_sort l1 )
                           else merge (merge_sort l1) (merge_sort l2)

Merci.

En respuesta a Maxime Denis

Re: merge_sort

de Marc Zeitoun -

Bonsoir,

Pourquoi un failwith lorsque la liste est vide ? Une fonction de tri doit, sur une entrée liste vide, renvoyer également la liste vide, et non pas faire une erreur. 

--mz