Traduire un code de java

bebetoalvaro Messages postés 14 Statut Membre -  
lirey83 Messages postés 76 Statut Membre -
le code:
// Tri selection
    ////////////////
    static Liste Tri_Selection_Liste(Liste l)
    {
 if (l == null)
     return null ;

 // Recherche du minimum : attention au decalage d'un cran de l1 et l2
 Liste l1 = l, l2 = null ; ;
 int min = l.elt ;
 while (l1.suivant != null) {
     if (l1.suivant.elt < min) {
  min = l1.suivant.elt ;
  l2 = l1 ;
     }
     l1 = l1.suivant ;
 }

 // On supprime le minimum de la liste
 if (l2 == null) {
     l.suivant = Tri_Selection_Liste(l.suivant) ;
     return l ;
 }
 else {
     l1 = l2.suivant ;
     l2.suivant = l2.suivant.suivant ;
     l1.suivant = Tri_Selection_Liste(l) ;
     return l1 ;
 }
    }

    // Tri insertion
    ////////////////
    static Liste Tri_Insertion_Liste(Liste l)
    {
 // On prend le premier element
 Liste l2 = l ;
 l = l.suivant ;
 l2.suivant = null ;

 // On ajoute les elements suivants
 while (l != null) {
     if (l.elt < l2.elt) {
  Liste l1 = l ;
  l = l.suivant ;
  l1.suivant = l2 ;
  l2 = l1 ;
     }
     else {
  Liste l1 = l ;
  l = l.suivant ;
  l1.suivant = null ;
  Ajout_Trie_Liste(l2, l1) ;
     }
 }
 return l2 ;
    }

    // Fonction d'ajout d'un element dans une liste triee
    static void Ajout_Trie_Liste(Liste l, Liste l1) {
 if (l.suivant == null) {
     l.suivant = l1 ;
 }
 else if (l1.elt < l.suivant.elt) {
     l1.suivant = l.suivant ;
     l.suivant = l1 ;
 }
 else
     Ajout_Trie_Liste(l.suivant, l1) ;
    }
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    Bonjour parce que je dirais quand même bonjour, un minimum de politesse c'est sympa.

    Bon je dirais (espérons que Jeff ne voit pas ca ^^) que les gens ici sont bénévoles et attendent aussi un minimum. Ils veulent bien aidé mais il faut que le problème soit explicitement exposé.

    Ici le titre de ton post n'est pas du tout explicite désolé de dire ca, mais on ne comprend pas ce que tu veux et ensuite dans la description tu nous donne juste le code. Mais que faire avec cela??

    Si tu pouvais juste au moins faire une ou quelques phrases disant ce que tu veux faire cela aidera déjà pas mal.

    Je ne te critique pas, c'est juste dans l'optique que tu obtiennes une réponse rapide sur un problème qui est peut être simple. :):)

    CCM c'est ca !!
    0
  2. lirey83 Messages postés 76 Statut Membre 13
     
    Voilà ce que cela peut donner, en supposant que tu aies déclaré les types suivant :
    Liste = ^Element;
    Element = record
    elt: integer;
    suivant : Liste;
    end;

    function Tri_Selection_Liste(l: Liste):Liste;
    var
     min :integer;
     l1, l2: Liste;
    begin
    if (l = nil) then
    begin
    result := nil ;
    exit;
    end;
    
    // Recherche du minimum : attention au decalage d'un cran de l1 et l2
    l1 := l; l2 := nil ;
    min := l.elt ;
    while (l1.suivant <> nil) do
    begin 
    if (l1.suivant.elt < min) then
    begin 
    min := l1.suivant.elt ; 
    l2 := l1 ; 
    end; 
    l1 := l1.suivant ; 
    end; 
    
    // On supprime le minimum de la liste 
    if (l2 = nil) then
    begin 
    l.suivant := Tri_Selection_Liste(l.suivant) ; 
    result :=l ;
    exit; 
    end 
    else begin 
    l1 := l2.suivant ; 
    l2.suivant := l2.suivant.suivant ; 
    l1.suivant := Tri_Selection_Liste(l) ; 
    result :=l1 ; 
    end; 
    end; 
    
    // Tri insertion 
    ////////////////
    procedure Ajout_Trie_Liste(var l: Liste; l1: Liste); forward;
    function Tri_Insertion_Liste(l: Liste):Liste;
    var
     l1, l2: Liste;
    begin 
    // On prend le premier element 
    l2 := l ;
    l := l.suivant ; 
    l2.suivant := nil ;
    
    // On ajoute les elements suivants 
    while (l <> nil) do
    begin 
    if (l.elt < l2.elt) then
    begin 
    l1 := l ;
    l := l.suivant ; 
    l1.suivant := l2 ; 
    l2 := l1 ; 
    end 
    else begin 
    l1 := l ;
    l := l.suivant ; 
    l1.suivant := nil ;
    Ajout_Trie_Liste(l2, l1) ;
    end; 
    end; 
    result :=l2 ; 
    end; 
    
    // Fonction d'ajout d'un element dans une liste triee
    procedure Ajout_Trie_Liste(var l: Liste; l1: Liste);
    begin 
    if (l.suivant = nil) then
    begin 
    l.suivant := l1 ; 
    end 
    else if (l1.elt < l.suivant.elt) then 
    begin 
    l1.suivant := l.suivant ; 
    l.suivant := l1 ; 
    end 
    else 
    Ajout_Trie_Liste(l.suivant, l1) ; 
    end;
    
    0