Tri alphabétique par insertion

Contenu du snippet

En fait j'ai galérer pas mal pour toruver une méthode de tri assez rapide, (en tout cas plus que le tri à bulle)
et j'ai trouvé cette méthode de tri par insertion qeu j'ai mis en pratique en vbscript pour de l'asp....

plus d'infos sur la méthode sur ces sites :
http://homepage.mac.com/pierremousel/IGT2IF/IGT2IFTris.html
http://www-ipst.u-strasbg.fr/ipst/deug-ti/aide-c/tris/triinser.htm

Désolé j'ai été avare de commentaire, mais pour faire bref je récupère les valeurs dans les cases je les converti en majuscules dans une dimension du tableau et je conserve la casse d'origine dans l'autre dimension ensuite j'axécute les focntions qui vont bien (voir les algos pourplus d'explications) et je retourne le tableau trié.

Moins de 2 sec. pour une page ASP avec 120 éléments à l'intérieur. très intéressant. non ?

Source / Exemple :


<HTML>
<HEAD>
<SCRIPT language="VBscript">

Function Trier(Formulaire)
dim tableau(4,1)
document.form2.TexteOrigine.value = ""
For i = 0 to 4
    tableau(i,0) = ucase(Formulaire.zone(i).value)
    tableau(i,1) = Formulaire.zone(i).value
next

trier_Tableau(tableau)

End Function

Function trier_Tableau(Tab_tri)

nb_ligne = ubound(tab_tri)

call triinsertion(tab_tri, nb_ligne)

for i = 0 to nb_ligne
    document.form2.TexteOrigine.value = document.form2.TexteOrigine.value & i & "=" & tab_tri(i,0) & "/" & tab_tri(i,1) & vbcrlf
next

End Function

Function TriInsertion(Tableau, Nb_Elements)
Dim pt 'Position testée

    For pt = 1 To Nb_Elements
        call decaletab(Tableau, pt)
    Next

TriInsertion = tableau

End Function

Function decaletab(Tableau, Position_Test)

dim DPG 'Dernier Plus grand
dim Tampon
dim Tampon_Min

    DPG = Position_Test-1
    Tampon = tableau(Position_Test,0)
    Tampon_Min = tableau(Position_Test,1)

    do while DPG >=0 and strcomp(tableau(DPG,0),Tampon,1)=1
          Tableau(DPG+1,0)=Tableau(DPG,0)
          Tableau(DPG+1,1)=Tableau(DPG,1)
          DPG = DPG-1
          if dpg < 0 then exit do
    loop
    Tableau(DPG+1,0)=Tampon
    Tableau(DPG+1,1)=Tampon_Min

decaletab = tableau
End Function

</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="form2">
<input type="text" name="zone" VALUE="tutu">tri 1<br>
<input type="text" name="zone" VALUE="titi">tri 2<br>
<input type="text" name="zone" VALUE="tata">tri 3<br>
<input type="text" name="zone" VALUE="toto">tri 4<br>
<input type="text" name="zone" VALUE="tete">tri 5<br>

<INPUT TYPE="button" NAME="bouton" VALUE="Trier" onClick="Trier(form2)"><BR>

<br>
Zone triée
<br>
<TEXTAREA NAME="TexteOrigine" ROWS=5 COLS=40>
</TEXTAREA>

</FORM>
</BODY>
</HTML>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.