Programme de tri

Description

Voici mon 1ere programme en C.
J'ai realisé un programme de tri de nombres, j'ai reflechie plusieur jour a un bon algorithm pour que le programme classe le plus de nombres le plus rapidement possible. Le programme classe actuelement sur mon pc 1.000.000 chiffres allent de 0 a 1.000.000 en 63Ms.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(int argc, char *argv[])
{
  DWORD deb, fin;
  int tmp,a,b,c,d,e;
  printf("nombres de chiffres a classer ?");
  scanf("%i", &c);
  printf("nombres allent de 0 a ?");
  scanf("%i", &d);
  printf("Voullez vous affichier les chiffre une foi classer ? (oui = 1; non = 0)");
  scanf("%i", &e);
  int tab [2][d];
  int tab2 [c];

  for (a=0;a<c;a++)        //   Inscrit des nobres aleatoirement   //
  tab2[a]=(rand()%d);      //         dans le tableau tab2         //

  deb = GetTickCount();      //   debut du crono   //

  for (a=0;a<c;a++)          //   fait autent de boucle qu'il y a de nombre a classer   //
  {
   tmp=tab2[a];
   if (tab[0][tmp] == tmp)             //   si le nombre a deja été classer, alors rejouté + 1   //
   tab[1][tmp] = tab[1][tmp] + 1;      //          a la desieme ligne de la colone tmp           //
   else
   {
    tab[1][tmp] = 0;                  //   si le chiffre n'a jamais été classer, inisialiser la desieme ligne de la colone tmp a 0   //
    tab[0][tmp] = tmp;
   }
  }

  if (e == 0)         //   si il ne fo pas affichier les chiffre   //
  {
   //printf("chiffre classer du plus petit au plus grand : \n");
   for (a=1;a<d;a++)              //   lire tout les casse de la 1ere ligne du tableau   //
   {
    if (tab[0][a] == a)           //   si le N° de la case est le meme que le que le N° qu'il y a dedans   //
    {
     //printf("%i\n", tab[0][a]);
     for (b=0;b<tab[1][a];b++)      //   boucle pour afficher plusieur foi les chiffre ki on apparu plusieur foi   //
     {
      //  printf("%i\n", tab[0][a]);
     }
    }
   }
  }

  if (e == 1)            //   si il fo affichier les chiffre   //
  {
   printf("chiffre classer du plus petit au plus grand : \n");
   for (a=1;a<d;a++)               //   lire tout les casse de la 1ere ligne du tableau   //
   {
    if (tab[0][a] == a)            //   si le N° de la case est le meme que le que le N° qu'il y a dedans   //
    {
     printf("%i\n", tab[0][a]);
     for (b=0;b<tab[1][a];b++)    //   boucle pour afficher plusieur foi les chiffre ki on apparu plusieur foi   //
     {
      printf("%i\n", tab[0][a]);
     }
    }
   }
  }

  fin = GetTickCount();                    //fin du crono
  printf("le tri a mi %d Ms", fin - deb);

  while(1==1);
  //Pause infini pour eviter que le programme se ferme une foi le trie terminé

  return 0;
}

Conclusion :


N'esité pas a reagir si vous avez une idéé pour ameliorer la rapidité du tri.

Codes Sources

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.