Tri par insertion d'une liste

braham2 Messages postés 122 Statut Membre -  
braham2 Messages postés 122 Statut Membre -
Bonjour, comment allez vous mes amis alors j'ai probleme j'arrive pas a trouvé une solution bien définie et voici l'énoncé de mon probleme:
1.
le tri pr insertion dans une liste linéaire chainé de n elements peut etre formulé comme suit :
pour p allant de 1 a n-1
considérer la sous liste triée formé des p premier elements
supprimé le p-1 iéme élément
l'insérer dans cette sous liste a a bonne place sn créer un nouveau maillon
donner le programme en pascale .
2.
dans 1 la recherche de la position dans laquelle l'élément est insérer se fait ordinairement à partir du premier élément. on désire maintenant que cette recherch se fasse par rapport au dernier élément insérer. c'st a dire i l'élément à inserer est superieur ou égal au dernier élément insérer la recherche de sa position se fait a partir de cet élément autrement à partir du début.
refaire l'algorithme précédent en rajoutant t en mettant en relief les opérations rajouté pour le but désiré.
3.
afin d'amelioré la variante 1. l'insertion d'un élément dans une sous liste se fera par rapport à un élément déja insérer qui soit le plus proche de la position du milieu.donc quand un nouvel élément est insérer dans une sous liste on choisira entre cet élément et le dernier insérer celui qui est le plus proche du mileu .
reprendre l'algorithme précédent en rjoutant et en mettant en relif les opérations rajoutées pour l'objectif désiré.
aidez moi s'il vous plait urgent please.
Configuration: Windows XP
Firefox 3.5.7

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    1
    1. braham2 Messages postés 122 Statut Membre 7
       
      bjr si vous savez quelqu'un métrise bien cette trucs parceque j'arrive pas a trouver une solution satisfaite merci de m'aider c'est urgent et merci bien et beaucoup
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > braham2 Messages postés 122 Statut Membre
         
        j'arrive pas a trouver une solution satisfaite
        Ben montres-nous déjà ce que tu as fait...
        0
  2. braham2 Messages postés 122 Statut Membre 7
     
    salut et bjr j'ai fais deux algorithme un est marche très bien mais avec d'autre methode et le deuxiéme non
    voila le premier programme qui n'est pas marché :
    program ansire;
    type pnt=^element;
    element=record
    val:integer;
    suiv:pnt;
    end;
    var
    n,v:integer;
    l,r,k:pnt;
    procedure creation(var l:pnt ;var c:integer);
    var
    p:pnt;
    bool:boolean;
    v:integer;
    begin
    l:=nil;
    c:=0;
    bool:=true;
    writeln;
    writeln(' entre la list lorsque vous avez termine tape sur 0');
    while bool=true do
    begin
    c:=c+1;
    write(' ');
    readln(v);
    if v=0 then begin
    bool:=false
    end
    else begin
    new(p);
    p^.val:=v;
    p^.suiv:=l;
    l:=p;
    end;
    end;
    end;
    procedure affiche(l:pnt);
    var
    p:pnt;
    begin
    writeln(' la liste est le suivant');
    p:=l;
    while p<>nil do
    begin

    writeln(' ',p^.val);
    p:=p^.suiv;
    end;
    end;
    begin
    creation(l,n);
    writeln('donne la val de pnt qui v.ins ');
    readln(v);
    new(k);
    k^.val:=v;
    r:=l;
    if( r^.suiv=l) then
    begin
    r^.suiv:=k;
    end
    else begin
    l:=k;
    end;
    k^.suiv:=r^.suiv;

    affiche(l);
    readln;
    end.

    et voila le deuxiéme qu'il fonctionne :
    Program Inserer_Un_Element_Liste_Contigue;

    Const N=10;

    Type Element = Integer;

    Tableau = Array[1 ..N] of Element;

    Var Liste : Tableau;

    Elt : Element;

    {Procédure de création de la liste}

    Procedure Creation (Var L: Tableau);

    Var J : Integer;

    Begin

    For J:=1 to N-1 do

    Begin

    Writeln;

    Write(' Elément n? ', J,' : ');

    readln(L[J]);

    While L[J] = 0 do

    Begin

    Write(' L"élément doit être supérieur à zéro (0) : ');

    Readln(L[J]);

    End;

    End;

    End;

    {Procédure qui trie la liste}

    Procedure Tri(var L3:Tableau);

    Var A,B:Integer;

    Trouve: Boolean;

    Begin

    A:=1;

    While A <= N-1 do

    Begin

    B := A + 1;

    While B <= N-1 do

    Begin

    If L3[A] > L3[B] then

    Begin

    Elt := L3[A];

    L3[A] := L3[B];

    L3[B] := Elt;

    B := B + 1;

    End

    Else

    Begin

    B := B + 1;

    End;

    End;

    A := A + 1;

    End;

    End;

    {Procédure qui affiche la liste après le tri}

    Procedure Affiche (L2: Tableau);

    Var I, K: Integer;

    Begin

    Write(' ');

    For I:=1 to N do

    Begin

    Write(L2[I],' | ');

    End;

    End;

    {Procédure qui insère un élément en respectant l’ordre de la liste}

    Procedure Insertion (var L1: Tableau);

    Var I : Integer;

    Tete, Elem : Element;

    Trouve : Boolean;

    {Procédure qui crée un espace vide pour l’insertion d’un élément}

    Procedure Espacement(I: integer);

    Var H: Integer;

    Begin

    For H:= N Downto I+1 do

    Begin

    L1[H] := L1[H-1];

    End;

    End;

    Begin

    Writeln; Writeln; Writeln;

    Write(' Donner l"élément à insérer dans la liste: ');

    Readln(Elem);

    I:=1;

    While (I <= N) and (Trouve = False) do

    Begin

    If (Elem > L1[I]) and (L1[I] <> 0)then

    Begin

    Trouve:=False;

    I := I + 1;

    End

    Else

    Begin

    Trouve:= true;

    If I = 1 then

    Begin

    Espacement(I);

    L1[I]:=Elem;

    End

    Else

    If I = N then

    Begin

    L1[I]:= Elem;

    End

    Else

    Begin

    Espacement(I);

    L1[I]:=Elem;

    End;

    End;

    End;

    End;

    BEGIN { PROGRAMME PRINCIPAL }

    Creation (Liste);

    Writeln; Writeln; Writeln;

    Writeln(' LES ELEMENTS DE LA LISTE AVANT L"INSERTION');

    Writeln;

    Tri(Liste);

    Affiche(Liste);

    Insertion(Liste);

    Writeln;

    Writeln(' LES ELEMENTS DE LA LISTE APRES L"INSERTION ');

    Writeln;

    Affiche (Liste);

    Readln;

    END.
    0