TestTri(new int[]{ 1,2,3,4,5 });
TestTri(new int[]{ 5,1,4,2,3 });
TestTri(new int[]{ 5,1,6,4,2,3 });
static void Afficher(int []tab)
for(int i = 0; i != tab.Length; ++i)
Console.Write($"{tab[i]} ");
Console.WriteLine("... il est donc trié");
Console.WriteLine("... il n'est donc pas trié");
static void TestTri(int [] tab)
Console.Write("Avant : ");
Console.Write("Après : ");
public static void TriFusion(int[] vals) => TriFusion(vals, 0, vals.Length);
static void TriFusion(int[] vals, int min, int max)
if (vals.Length <= SEUIL_FUSION)
TriBulles(vals, min, max);
int milieu = PointMilieu(min, max);
TriFusion(vals, min, milieu);
TriFusion(vals, milieu, max);
Fusionner(vals, min, milieu, max);
const int SEUIL_FUSION = 10;
static void Fusionner(int[] vals, int min, int milieu, int max)
int[] temp = new int[Distance(min, max)];
while (i != milieu && j != max)
for (int k = 0; k != temp.Length; ++k)
public static void Permuter(ref int a, ref int b)
public static void TriBulles(int[] vals, int min, int max)
for (int i = min; i < max - 1; ++i)
for (int j = i + 1; j < max; ++j)
Permuter(ref vals[i], ref vals[j]);
static int Distance(int min, int max) =>
static int PointMilieu(int min, int max) =>
public static bool EstTrié(int [] tab)
for(int i = 1; i < tab.Length; ++i)