Tri par insertion/help langage C

Fermé
xvcs - 8 nov. 2010 à 17:30
 sabi - 29 mars 2016 à 23:03
Bonjour,

je suis débutante et doit effectuer un petit programme qui va trier un tableau. Or ma fonction tri ne fonctionne pas j'aimerai dans un premier temps que quelqu'un me corrige et mexplique mes erreurs. dans un second temps jaimerai savoir si je reponds bien a la question. voici l'enoncé: donner l'algorithme de la fonction permettant d'inserer a sa place la (i+1)eme valeur t[i] dans les (i+1)ere positions du tableau t supposé trié entre O et i-1: par comparaisons et permutations la valeur inserée remonte dans le tableau jusqu'a sa place.

dans l'attente de vos reponses, merci.

#include <stdio.h>
#include <stdlib.h>
#define max 11
typedef int Tab[max];

void perm(int *a, int *b)
{
int c=*a;*a=*b;*b=c;
}

void inserer1(Tab t, int n)
{
int i,j,a;
for(i=1;i<=n-1;i++)
{
j=i-1;
while((j>=0) && (t[j]>t[j+1]))
{
//a=t[j];
//t[j]=t[j+1];
//t[j+1]=a;
perm(&t[j],&t[j+1]);
j=j-1;
}
}

}

int main()
{
Tab t={0,2,4,6,8,10,14,16,20,18};
int n,i;
for(i=0;i<max;i++)
{
printf("%d\n",t[i]);
}
inserer1(t,11);
printf("Hello world!\n");
return 0;
}



7 réponses

@Arya Dröttningu: merci davoir repondu.
mais alors c'est quoi le but de la question si on ne me demande pas de trier le tableau?^^ il est question de "tri a insertion" non?
j'ai rebossé le code par rapport a ce que j'ai donc compris!^^

#include<stdio.h>
#include <stdlib.h>
#define n 5
typedef int Tab[n];

/* tri par insertion */
void tri_insertion(Tab t,int i)
{
int j,a;
for(i=1;i<n;i++)
{j=i-1;
while((j>=0) && (t[j]>t[j+1]))
{
a=t[j];
t[j]=t[j+1];
t[j+1]=a;
j--;
}

}
}

/*tri par insertion sequentielle*/
int tri_insertion_seq(Tab t,int i)
{
i
}

int tri_insertion_recursif(Tab t,int i,int k)
{
}

/* affiche le tableau */
void affiche (Tab t, int i)
{
for (i=0;i<n;i++)
printf ("%d ",t[i]);
printf ("\n");
}


int main ()
{
Tab t; int choix, i,r;
for (i=0;i<n;i++)
{
printf("Entrez l'élément %d : ",i+1);
scanf("%d",&t[i]);
}
printf("\ntableau initial : ");
affiche(t,i);
while(choix!=4)
{
printf ("\n********** MENU **********\n");
printf ("1. tri insertion\n");
printf ("2. tri insertion sequentiel\n");
printf ("3. tri insertion recursif\n");
printf("4. quitter");
printf ("\nChoisissez une option : ");
scanf ("%d",&choix);
printf("\n");
switch (choix)
{
case 1:
printf ("Tri insertion: ");
tri_insertion(t,i);
affiche (t,i);
break;
case 2:
printf ("Tri insertion sequentiel: ");
tri_insertion_seq(t,i);
affiche(t,i);
break;
case 3:
printf("Tri insertion recursif: ");
r=tri_insertion_recursif(t,i);
break;
case 4:
printf ("Au revoir!\n");
break;
}
}
return 0;
}

merci d'y preter attention.
alors, d'apres toi, enfaite a la base je suis censé avoir un tableau deja trié, puis rajouter une valeur que je doit placer dans le tableau tout en le gardant trié?? elles sont beaucoup trop complexe leurs questions làà!^^
5
oh mon dieu tant de boulot pour rien si je ne réponds pas a la question!!!! =s
je suis perdu, comment dois-je faire alors?? :/
0