Programme de tri

Soyez le premier à donner votre avis sur cette source.

Vue 10 656 fois - Téléchargée 243 fois

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

Ajouter un commentaire Commentaires
StanOfSky Messages postés 43 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 7 octobre 2006
15 juil. 2004 à 23:54
ba de toute maniere ca existe po la récursivité en info d'un point de vu purement physique... c juste une écriture plus lisible et plus facile à démontrer d'un point de vu mathématique.
en fait au résultat c du linéaire : t'empiles, tu dépiles...
apres tu peu avoir des compilo qui optimisent à fond et optenir le meme résultat en ayant ecrire une fonction récursive qu'en l'ayant déroulé et fait tout meme le systeme de pile.
seul l'assembleur reste la meilleur solution pour etre certain d'avoir une fonctions optimisée a fond ;)
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
15 juil. 2004 à 13:07
Je parle bien d'option info, c'est a dire un petit programme, peu d'heures de cours et des profs qui ne connaissent que le programme et pas grand chose à coté.
Et si tu regardes les commentaires des codes sources tu remarquera qu'il y en a quelques uns du genre : "ah oui je savais pas, mon prof d'info m'a dit le contraire"

Et merci pour l'info, je vais de ce pas acheter 1 bon livre d'algorithmique, je vais voir si je trouve un de ses bouquins
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
15 juil. 2004 à 12:35
Je n'irais pas jusque la (encore que...) mais faut surtout plusieurs sources d'informations. Je te conseille Robert Sedgewick qui est une reference absolue.
Maegis Messages postés 101 Date d'inscription vendredi 15 février 2002 Statut Membre Dernière intervention 6 août 2007
15 juil. 2004 à 12:22
Conclusion : ne pas croire les profs d'option info
On m'avait affirmé qu'on ne pouvait pas """"supprimer la recursivité"""" dans le qsort sans deteriorer les performances
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
15 juil. 2004 à 00:25
on est bien d'accord !!!
Afficher les 19 commentaires

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.