Programme de tri

Soyez le premier à donner votre avis sur cette source.

Vue 10 069 fois - Téléchargée 227 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
Messages postés
43
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
7 octobre 2006

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 ;)
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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.
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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.