Tri indice min et indice max
nesrionata
Messages postés
21
Statut
Membre
-
nesrionata Messages postés 21 Statut Membre -
nesrionata Messages postés 21 Statut Membre -
Bonjour,
tout d'abord mon problème consiste à trier mon tableau de taille n déjà saisi; en utilisant le TRI MIN MAX:
son principe consiste à chercher à chaque itération l'indice du min et l'indice du max et permuter avec les éléments
i et n-i-1.
voilà les fonctions de recherche de ses indices
int getmin (float t[],int n,int i)
{
int p,j;
for(p=i,j=i+1;j<n;j++)
if (*(t+j) < *(t+p))
p=j;
return(p);
}
int getmax (float t[],int n,int i)
{
int p,j;
for(p=i,j=i+1;j<n;j++)
if (*(t+j) > *(t+p))
p=j;
return(p);
}
la procédure de tri est:
void tri_min_max(float t[],int n)
{
int i,i_min,i_max;
for(i=0;i<n/2;i++)
{
i_min=getmin(t,n,i);
i_max=getmax(t,n,i);
permuter(t+i,t+i_min);
if (i_max!=i)
permuter(t+n-i-1,t+i_max);
else
permuter(t+n-i-1,t+i_min);
}
}
voici un exemple:
pour un tableau ayant comme valeurs:{4,1,3,2,6,5}
il m'affiche {1,2,3,6,4,5}
je ne sais quoi faire, merci de m'aider.
--
enfin nesrionita nesrionata nesrionétaaa !!
tout d'abord mon problème consiste à trier mon tableau de taille n déjà saisi; en utilisant le TRI MIN MAX:
son principe consiste à chercher à chaque itération l'indice du min et l'indice du max et permuter avec les éléments
i et n-i-1.
voilà les fonctions de recherche de ses indices
int getmin (float t[],int n,int i)
{
int p,j;
for(p=i,j=i+1;j<n;j++)
if (*(t+j) < *(t+p))
p=j;
return(p);
}
int getmax (float t[],int n,int i)
{
int p,j;
for(p=i,j=i+1;j<n;j++)
if (*(t+j) > *(t+p))
p=j;
return(p);
}
la procédure de tri est:
void tri_min_max(float t[],int n)
{
int i,i_min,i_max;
for(i=0;i<n/2;i++)
{
i_min=getmin(t,n,i);
i_max=getmax(t,n,i);
permuter(t+i,t+i_min);
if (i_max!=i)
permuter(t+n-i-1,t+i_max);
else
permuter(t+n-i-1,t+i_min);
}
}
voici un exemple:
pour un tableau ayant comme valeurs:{4,1,3,2,6,5}
il m'affiche {1,2,3,6,4,5}
je ne sais quoi faire, merci de m'aider.
--
enfin nesrionita nesrionata nesrionétaaa !!
Configuration: Windows XP Firefox 3.0.3
2 réponses
-
Bonjour
Si j'ai compris ton algorithme, tu cherches à chaque passage le min et le max, et tu les remets respectivement au début et à la fin de la zone explorée.
Dans ce cas, il me semble que ton intervalle de recherche devrait diminuer par les deux bouts à la fois. Or tu recherches entre i (qui augmente bien) et n (fixe) -
--
svp j'attends vos critiques et réponses.
enfin nesrionita nesrionata nesrionétaaa !!