class Tri extends AlgoTri {
    void tri(int chiffre[],int coul[],int place[]) throws Exception
  {
    int Taille = 5;
    pause();
    for (int k = Taille/2; k > 0; k--)
      {
        entasse(chiffre, coul, place, k, Taille);
        pause();
      }
    do
      {
        int N = chiffre[0];
        chiffre[0] = chiffre[Taille - 1];
        chiffre[Taille - 1] = N;

        int C = coul[0];
        coul[0] = coul[Taille - 1];
        coul[Taille - 1] = C;
	place[Taille - 1] = 1;     /* chiffre place */

        Taille = Taille - 1;
        pause();
        entasse(chiffre, coul, place,1, Taille);
      }
    while (Taille > 1);
  }

  void entasse(int chiffre[],int coul[], int place[], int k, int Taille) throws Exception {
    int N = chiffre[k - 1];
    int C = coul[k - 1];
    int P = place[k - 1];

    while (k <= Taille/2)
      {
        int j = k + k;
        if ((j < Taille) && (chiffre[j - 1] < chiffre[j]))
          {
            j++;
          }
        if (N >= chiffre[j - 1])
          {
            break;
          }
        else
          {
            chiffre[k - 1] = chiffre[j - 1];
            coul[k - 1] = coul[j - 1];
            place[k - 1] = place[j - 1];
            k = j;
            pause();
          }
      }
    chiffre[k - 1] = N;
    coul[k - 1] = C;
    place[k - 1] = P;
    pause();
  }
 }
