Partage
  • Partager sur Facebook
  • Partager sur Twitter

métrhodes de tri

    19 mai 2006 à 16:33:03

    <code type="c"></code> :(
    salut tout le monde j'ai un programme en langage c sur les méthodes de tri mais il fonctionne pas correctemt, j'ai tout éssayé mais sa marche toujours pas;est-ce-que qualqu'un pourrait le verifier svp.merci d'avance

    #include <conio.h>
    #include <stdio.h>

    void echanger(int tab[], int i, int j)
    {
    int memoire;
    memoire=tab[i];
    tab[i]=tab[j];
    tab[j]=memoire;
    }


    void tri_bulle(int tableau[],int longueur)
    {
    int i, inversion;

    do
    {
    inversion=0;

    for(i=0;i<longueur-1;i++)
    {
    if (tableau[i]>tableau[i+1])
    {
    echanger(tableau,i,i+1);
    inversion=1;
    }
    }
    }
    while(inversion);
    }


    void main(void)
    {
    int i;
    int tab[]={5,0,9,8,6,3,7,1,4,2};
    clrscr();
    printf("tableau avant classement \n");
    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }

    tri_bulle(tab,10);
    printf("\ntableau apres classement\n");

    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }
    printf("\n appuyez sur une touche");
    getch();
    }






    #include <conio.h>
    #include <stdio.h>

    #define true 1
    #define false 0

    void echanger(int tab[], int i, int j)
    {
    int memoire;
    memoire=tab[i];
    tab[i]=tab[j];
    tab[j]=memoire;
    }

    void tri_insertion(int tableau[],int longueur)
    {
    int i, memory, compt, marqueur;

    for(i=1;i<longueur;i++)
    {
    memory=tableau[i];
    compt=i-1;

    do
    {
    marqueur=false;
    if (tableau[compt]>memory)
    {
    tableau[compt+1]=tableau[compt];
    compt--;
    marqueur=true;
    }
    if (compt<0) marqueur=false;
    }
    while(marqueur);
    tableau[compt+1]=memory;
    }

    }
    void main(void)
    {
    int i;
    int tab[]={5,0,9,8,6,3,7,1,4,2};
    clrscr();
    printf("tableau avant classement \n");
    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }

    tri_insertion(tab,10);
    printf("\ntableau apres classement\n");

    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }
    printf("\n appuyez sur une touche");
    getch();
    }






    #include <conio.h>
    #include <stdio.h>

    void echanger(int tab[], int i, int j)
    {
    int memoire;
    memoire=tab[i];
    tab[i]=tab[j];
    tab[j]=memoire;
    }

    void tri_selection(int tab[],int longueur)
    {
    int maxi, i;

    while(longueur>0)
    {
    maxi=0;

    for(i=1;i<longueur;i++)
    {
    if(tab[i]>tab[maxi]) maxi=i;
    }

    echanger(tab,maxi,(longueur-1));

    longueur--;
    }
    }

    void main(void)
    {
    int i;
    int tab[]={5,0,9,8,6,3,7,1,4,2};
    clrscr();
    printf("tableau avant classement \n");
    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }

    tri_selection(tab,10);
    printf("\ntableau apres classement\n");

    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }
    printf("\n appuyez sur une touche");
    getch();
    }






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

    void fusion(int tableau[],int deb1,int fin1,int fin2)
    {
    int *table1;
    int deb2=fin1+1;
    int compt1=deb1;
    int compt2=deb2;
    int i;

    table1=malloc((fin1-deb1+1)*sizeof(int));

    /*/on recopie les éléments du début du tableau*/
    for(i=deb1;i<=fin1;i++)
    {
    table1[i-deb1]=tableau[i];
    }

    for(i=deb1;i<=fin2;i++)
    {
    if (compt1==deb2) /*/c'est que tous les éléments du premier tableau ont été utilisés*/
    {
    break; /*/tous les éléments ont donc été classés*/
    }
    else if (compt2==(fin2+1)) /*/c'est que tous les éléments du second tableau ont été utilisés*/
    {
    tableau[i]=table1[compt1-deb1]; /*/on ajoute les éléments restants du premier tableau*/
    compt1++;
    }
    else if (table1[compt1-deb1]<tableau[compt2])
    {
    tableau[i]=table1[compt1-deb1]; /*/on ajoute un élément du premier tableau*/

    compt1++;
    }
    else
    {
    tableau[i]=tableau[compt2]; /*/on ajoute un élément du second tableau*/
    compt2++;
    }
    }
    free(table1);
    }


    void tri_fusion_bis(int tableau[],int deb,int fin)
    {
    if (deb!=fin)
    {
    int milieu=(fin+deb)/2;
    tri_fusion_bis(tableau,deb,milieu);
    tri_fusion_bis(tableau,milieu+1,fin);
    fusion(tableau,deb,milieu,fin);
    }
    }

    void tri_fusion(int tableau[],int longueur)
    {
    if (longueur>0)
    {
    tri_fusion_bis(tableau,0,longueur-1);
    }
    }

    /*programme qui permet de tester le tri fusion*/
    void main(void)
    {
    int i;
    int tab[]={5,0,9,8,6,3,7,1,4,2};
    clrscr();
    printf("tableau avant classement \n");
    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }

    tri_fusion(tab,10);
    printf("\ntableau apres classement\n");

    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }
    printf("\n appuyez sur une touche");
    getch();
    }






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

    void echanger(int tab[], int i, int j)
    {
    int memoire;
    memoire=tab[i];
    tab[i]=tab[j];
    tab[j]=memoire;
    }

    int partition(int tableau[], int deb, int fin)
    {
    int compt=deb;
    int pivot=tableau[deb];
    int i;

    for(i=deb+1;i<=fin;i++)
    {
    if(tableau[i]<pivot)
    {
    compt++;
    echanger(tableau,compt,i);
    }
    }
    echanger(tableau,compt,deb);
    return(compt);
    }

    void tri_rapide_bis(int tableau[],int debut,int fin)
    {
    if(debut<fin)
    {
    int pivot=partition(tableau,debut,fin);
    tri_rapide_bis(tableau,debut,pivot-1);
    tri_rapide_bis(tableau,pivot+1,fin);
    }
    }

    void tri_rapide(int tableau[],int longueur)
    {
    tri_rapide_bis(tableau,0,longueur-1);
    }
    void main(void)
    {
    int i;
    int tab[]={5,0,9,8,6,3,7,1,4,2};
    clrscr();
    printf("tableau avant classement \n");
    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }

    tri_rapide(tab,10);
    printf("\ntableau apres classement\n");

    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }
    printf("\n appuyez sur une touche");
    getch();
    }






    #include <conio.h>
    #include <stdio.h>

    void echanger(int tab[], int i, int j)
    {
    int memoire;
    memoire=tab[i];
    tab[i]=tab[j];
    tab[j]=memoire;
    }

    void tri_shell(int tableau[],int longueur)
    {
    int n, i, j, valeur;

    n=0;

    while(n<longueur)
    {
    n=3*n+1;
    }

    while(n!=0)
    {
    n=n/3;
    for (i=n;i<longueur;i++)
    {
    valeur=tableau[i];
    j=i;

    while((j>(n-1)) && (tableau[j-n]>valeur))
    {
    tableau[j]=tableau[j-n];
    j=j-n;
    }
    tableau[j]=valeur;
    }
    }
    }


    void main(void)
    {
    int i;
    int tab[]={5,0,9,8,6,3,7,1,4,2};
    clrscr();
    printf("tableau avant classement \n");
    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }

    tri_shell(tab,10);
    printf("\ntableau apres classement\n");

    for(i=0;i<10;i++)
    {
    printf("%i,",tab[i]);
    }
    printf("\n appuyez sur une touche");
    getch();
    }

    • Partager sur Facebook
    • Partager sur Twitter
      19 mai 2006 à 16:40:17

      #include <conio.h>
      #include <stdio.h>

      void echanger(int tab[], int i, int j)
      {
      int memoire;
      memoire=tab[i];
      tab[i]=tab[j];
      tab[j]=memoire;
      }


      void tri_bulle(int tableau[],int longueur)
      {
      int i, inversion;

      do
      {
      inversion=0;

      for(i=0;i<longueur-1;i++)
      {
      if (tableau[i]>tableau[i+1])
      {
      echanger(tableau,i,i+1);
      inversion=1;
      }
      }
      }
      while(inversion);
      }


      void main(void)
      {
      int i;
      int tab[]={5,0,9,8,6,3,7,1,4,2};
      clrscr();
      printf("tableau avant classement \n");
      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }

      tri_bulle(tab,10);
      printf("\ntableau apres classement\n");

      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }
      printf("\n appuyez sur une touche");
      getch();
      }







      #include <conio.h>
      #include <stdio.h>

      #define true 1
      #define false 0

      void echanger(int tab[], int i, int j)
      {
      int memoire;
      memoire=tab[i];
      tab[i]=tab[j];
      tab[j]=memoire;
      }

      void tri_insertion(int tableau[],int longueur)
      {
      int i, memory, compt, marqueur;

      for(i=1;i<longueur;i++)
      {
      memory=tableau[i];
      compt=i-1;

      do
      {
      marqueur=false;
      if (tableau[compt]>memory)
      {
      tableau[compt+1]=tableau[compt];
      compt--;
      marqueur=true;
      }
      if (compt<0) marqueur=false;
      }
      while(marqueur);
      tableau[compt+1]=memory;
      }

      }
      void main(void)
      {
      int i;
      int tab[]={5,0,9,8,6,3,7,1,4,2};
      clrscr();
      printf("tableau avant classement \n");
      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }

      tri_insertion(tab,10);
      printf("\ntableau apres classement\n");

      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }
      printf("\n appuyez sur une touche");
      getch();
      }






      #include <conio.h>
      #include <stdio.h>

      void echanger(int tab[], int i, int j)
      {
      int memoire;
      memoire=tab[i];
      tab[i]=tab[j];
      tab[j]=memoire;
      }

      void tri_selection(int tab[],int longueur)
      {
      int maxi, i;

      while(longueur>0)
      {
      maxi=0;

      for(i=1;i<longueur;i++)
      {
      if(tab[i]>tab[maxi]) maxi=i;
      }

      echanger(tab,maxi,(longueur-1));

      longueur--;
      }
      }

      void main(void)
      {
      int i;
      int tab[]={5,0,9,8,6,3,7,1,4,2};
      clrscr();
      printf("tableau avant classement \n");
      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }

      tri_selection(tab,10);
      printf("\ntableau apres classement\n");

      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }
      printf("\n appuyez sur une touche");
      getch();
      }






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

      void fusion(int tableau[],int deb1,int fin1,int fin2)
      {
      int *table1;
      int deb2=fin1+1;
      int compt1=deb1;
      int compt2=deb2;
      int i;

      table1=malloc((fin1-deb1+1)*sizeof(int));

      /*/on recopie les éléments du début du tableau*/
      for(i=deb1;i<=fin1;i++)
      {
      table1[i-deb1]=tableau[i];
      }

      for(i=deb1;i<=fin2;i++)
      {
      if (compt1==deb2) /*/c'est que tous les éléments du premier tableau ont été utilisés*/
      {
      break; /*/tous les éléments ont donc été classés*/
      }
      else if (compt2==(fin2+1)) /*/c'est que tous les éléments du second tableau ont été utilisés*/
      {
      tableau[i]=table1[compt1-deb1]; /*/on ajoute les éléments restants du premier tableau*/
      compt1++;
      }
      else if (table1[compt1-deb1]<tableau[compt2])
      {
      tableau[i]=table1[compt1-deb1]; /*/on ajoute un élément du premier tableau*/

      compt1++;
      }
      else
      {
      tableau[i]=tableau[compt2]; /*/on ajoute un élément du second tableau*/
      compt2++;
      }
      }
      free(table1);
      }


      void tri_fusion_bis(int tableau[],int deb,int fin)
      {
      if (deb!=fin)
      {
      int milieu=(fin+deb)/2;
      tri_fusion_bis(tableau,deb,milieu);
      tri_fusion_bis(tableau,milieu+1,fin);
      fusion(tableau,deb,milieu,fin);
      }
      }

      void tri_fusion(int tableau[],int longueur)
      {
      if (longueur>0)
      {
      tri_fusion_bis(tableau,0,longueur-1);
      }
      }

      /*programme qui permet de tester le tri fusion*/
      void main(void)
      {
      int i;
      int tab[]={5,0,9,8,6,3,7,1,4,2};
      clrscr();
      printf("tableau avant classement \n");
      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }

      tri_fusion(tab,10);
      printf("\ntableau apres classement\n");

      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }
      printf("\n appuyez sur une touche");
      getch();
      }






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

      void echanger(int tab[], int i, int j)
      {
      int memoire;
      memoire=tab[i];
      tab[i]=tab[j];
      tab[j]=memoire;
      }

      int partition(int tableau[], int deb, int fin)
      {
      int compt=deb;
      int pivot=tableau[deb];
      int i;

      for(i=deb+1;i<=fin;i++)
      {
      if(tableau[i]<pivot)
      {
      compt++;
      echanger(tableau,compt,i);
      }
      }
      echanger(tableau,compt,deb);
      return(compt);
      }

      void tri_rapide_bis(int tableau[],int debut,int fin)
      {
      if(debut<fin)
      {
      int pivot=partition(tableau,debut,fin);
      tri_rapide_bis(tableau,debut,pivot-1);
      tri_rapide_bis(tableau,pivot+1,fin);
      }
      }

      void tri_rapide(int tableau[],int longueur)
      {
      tri_rapide_bis(tableau,0,longueur-1);
      }
      void main(void)
      {
      int i;
      int tab[]={5,0,9,8,6,3,7,1,4,2};
      clrscr();
      printf("tableau avant classement \n");
      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }

      tri_rapide(tab,10);
      printf("\ntableau apres classement\n");

      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }
      printf("\n appuyez sur une touche");
      getch();
      }






      #include <conio.h>
      #include <stdio.h>

      void echanger(int tab[], int i, int j)
      {
      int memoire;
      memoire=tab[i];
      tab[i]=tab[j];
      tab[j]=memoire;
      }

      void tri_shell(int tableau[],int longueur)
      {
      int n, i, j, valeur;

      n=0;

      while(n<longueur)
      {
      n=3*n+1;
      }

      while(n!=0)
      {
      n=n/3;
      for (i=n;i<longueur;i++)
      {
      valeur=tableau[i];
      j=i;

      while((j>(n-1)) && (tableau[j-n]>valeur))
      {
      tableau[j]=tableau[j-n];
      j=j-n;
      }
      tableau[j]=valeur;
      }
      }
      }


      void main(void)
      {
      int i;
      int tab[]={5,0,9,8,6,3,7,1,4,2};
      clrscr();
      printf("tableau avant classement \n");
      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }

      tri_shell(tab,10);
      printf("\ntableau apres classement\n");

      for(i=0;i<10;i++)
      {
      printf("%i,",tab[i]);
      }
      printf("\n appuyez sur une touche");
      getch();
      }



      Met bien ton code entre les balises "code" et INDENTTE LE ;)
      • Partager sur Facebook
      • Partager sur Twitter

      métrhodes de tri

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown