coulombemel
Messages postés6Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention10 février 2009
-
13 avril 2007 à 17:16
coulombemel
Messages postés6Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention10 février 2009
-
13 avril 2007 à 22:01
Bonjour!
Je suis à la recherche d'une méthode simple mais efficace de tri de tableau multidimensionnel ...
J'ai déjà une ébauche de faite ... mais y un bug ... pis j'arrive pas à trouver une solution pour le régler ...
je suis parti d'un exemple en PHP ...
Voici ce que ça donne :
procedure TForm1.TrierTableau();
var lasTableauATrier : Array of array of String;
lasLigne_Tampon : array of String;
lasTableau_Tampon : Array of array of String;
MaxLig, MaxCol, i, j, l, k, m, v, w,liColonneATrier : Integer;
begin
SetLength(lasTableauATrier, 3, 3);
For i := 0 to MaxLig -1 do
For j := 0 to MaxCol -1 do
DebugTextOut(lasTableauATrier[i, j]);
i := 0;
repeat
{ Chaque élément est comparé à celui qui lui est supérieur dans le classement }
j := 0;
repeat
If (lasTableauATrier[j, k] > lasTableauATrier[(j + 1), k]) Then
begin
{ l'élément J est plus important que l'élément J + 1 alors on les intervertit }
for l := 0 to MaxCol - 1 do
begin
lasLigne_Tampon[l] := lasTableauATrier[j,l];
lasTableau_Tampon[j,l] := lasTableauATrier[(j + 1),l];
lasTableau_Tampon[(j + 2), l] := lasLigne_Tampon[l];
end;
if (j < MaxLig - 2) then
Inc(j);
end
else
begin
for l := 0 to MaxCol do
begin
lasTableau_Tampon[j,l] := lasTableauATrier[j,l];
lasTableau_Tampon[(j + 1),l] := lasTableauATrier[(j+1),l];
end;
end;
//Inc(j);
until j = (MaxLig -1);
Inc(i);
For v := 0 to MaxLig -1 do
For w := 0 to MaxCol -1 do
//lasTableauATrier := lasTableau_Tampon;
until i = MaxLig
end;
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 13 avril 2007 à 19:44
Je revendique et recommande le deuxième ^^
Mais dans ton cas, je te recommande de faire un array of record, puisqu'apparamment, il s'agit plutôt d'enregistrements. De ce fait, tout sera plus simple et tu pourras faire une inversion de deux index en seulement trois lignes de code, au lieu de devoir faire une boucle.