Rechercher : dans
Par :

Algorithme tri croissant

Dernière réponse le 22 mar 2009 à 15:31:36 julie, le 27 déc 2005 à 19:54:49 
 Signaler ce message aux modérateurs

Bonjour
j ai un petit pb avec un algorithme de tri que je n arrive pas a faire fonctionner cela fait assez longtemps que je n ai pas eu faire ce gnere de fonction et j en ai enormement besoin pour mon patron
aidez moi svp
je souhaite effectuer le tri croissant de ces 5 nb 45/50/2/-45/46 en sachant que le nb de saisi est saisi par l utilisateur merci bocoup
ps ecrivez le moi en algorithme merci

Meilleures réponses pour « algorithme tri croissant » dans :
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
Tri à bulles -récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri à bulles : Procedure Tri_bulles (var t : TAB; n : integer); Var i, aux : integer; Function Trier (t : TAB; n : integer) : Boolean; ...
Tri par fusion - récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par fusion : Procedure Tri_Fusion (Var t : TAB; g, d : integer); Var m, i, j, k : integer; s : TAB; Begin If d > g Then ...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...
Introduction à l'algorithmique VoirNotion d'algorithme La mise au point d'un programme informatique se fait en plusieurs étapes. Il s'agit de fournir la solution à un problème, la première étape consiste donc à analyser le problème, c'est-à-dire en cerner les limites et le mettre...

1

kayzer75, le 9 aoû 2006 à 22:24:16

Pour ton patron lol
mais comment il ta embauché si sais pas faire ça
haha

Répondre à kayzer75

2

sebsauvage, le 9 aoû 2006 à 22:48:12
  • +2

Il existe plusieurs algo (tri à bulle, quicksort, etc.)

Tu n'as pas une idée sur la façon de faire ?
Essai d'imaginer comment tu ferais.


Et même sans ça, tu ne crois pas que tu pourrais chercher un peu sur Google ?

Répondre à sebsauvage

3

Floran, le 24 mar 2007 à 14:52:23

Salut Julie,
Je ne suis pas expert en informatique mais je pense que tu peut t'inspirer des algo de tri du site suivant.
www.greyc.ensicaen.fr/ensicaen/CoursEnLigne/AlgoTri.pdf
Si vraiment tu n'y arrives pas recontact moi en me donnant ton language de programmation.

Répondre à Floran

4

kamgamartins, le 2 oct 2007 à 16:41:11
  • +1

Bonjour,
essaie ceci

#include <stdio.h>
#include <conio.h>
#define LG 128
main()
{
int x[100]; /* tableau d'entiers */
int i = 0; /* variable de controle */
int last; /* Index de la derniere valeur saisie */
int d; /* nombre de passages de tri */
int k,j,z,ok; /*k,z et ok sont des variables de controles,et j un cpteur*/
int temp; /* variable auxiliaire pour permutation */
char reply; /* variable de contr0le */
char ligne[LG+1]; /*tabeau recevant la saisie de l'utilisateur au clavier*/
printf("Le programme saisit jusqu'à 100 entiers positifs compris entre \n"
"0 et 30000 et les trie en ordre croissant ou décroissant (au choix).\n"
"Fin par -1.\n\n");
printf("Entrez les nombres positifs :\n\n");
do
{
/*ici on controle si la valeur saisie est entiere et appatient à l'inteval
voulu,sinon on genère un message d'erreur*/ do{ ok=0;
gets(ligne);
for(j=0;j<strlen(ligne);j++)
/*ceci protège contre la saisie des valeurs réelles*/
if(ligne[j]=='.'){ok=1;printf("Saisie incorrecte!Recommencer SVP:\n");}
k=sscanf(ligne,"%d", &x[ i ]);
/*ceci protège contre une touche inattendue ou une valeur
non compris dans l'interval voulu*/ if(k!=1) {printf("Saisie incorrecte!Recommencer SVP:\n");ok=1;}
else if(!(x[ i ]>=-1&&x[ i ]<=30000)){printf("Saisie incorrecte!Recommencer SVP:\n"); ok=1;}
/*c'est le dernier test contre les données superflues du genre 25ff ou 2f*/
if(ok==0)for (j=0;j<strlen(ligne);j++){z=ligne[j]-'1';
if(!(z>=0&&z<10)&&x[i]!=-1&&ligne[j]!=32&&ligne[j]!='0')
{ok=1;
/*on vide*/
for (j=0;j<strlen(ligne);j++)ligne[j]=' ';
printf("Des données superflues saisies!\n");
printf("Recommencer la précédente saisie\n");}
}
}while(ok);
i++;
} while (x[i-1] != -1 && i < 100);
/*Rien n'est changé à ce niveau sauf le message sur le nombre des valeurs saisies*/
if(i==100) printf("\nvous avez saisie %d valeurs",i);
else printf("\nvous avez saisie %d valeurs",i-1);
if (i == 100)
last = i-1;
else
last = i-2;
if (i == 2)
printf("\n\nLe tableau ne contient que la valeur : %d\n\n", x[i-2]);
else if (i > 2)
{
printf("\n\nLe tableau contient les valeurs :\n\n");
for (i = 0; i <= last; i++)
{
printf("%d\t", x[ i ]);
if (i && (!(i % 8)))
printf("\n");
}
/*test de selection de choix*/
do{ ok=0;
printf("\n\nTri du tableau ?\n"
"Ascendant = a Descendant = d Non = n : ");
reply = getche();
k=reply;
if(k!='a'&&k!='d'&&k!='n'){ok=1;printf("\n\nchoix incorrect\n");}
if(k=='n')printf("\n\nFIN DU PROGRAMME,Merçi :p).");
}while(ok);
switch (reply)
{
case 'a': for (d = last; d != 0; d--)
for (i = 0; i < d; i++)
if (x[ i ] > x[i+1])
{ /* on permute */
temp = x[ i ];
x[ i ] = x[i+1];
x[i+1] = temp;
}
printf("\n\nLe tableau a été trié en ordre ascendant :\n\n");
for (i = 0; i <= last; i++)
{
printf("%d\t", x[ i ]);
if (i && (!(i % 8)))
printf("\n");
}
break;
case 'd': for (d = last; d != 0; d--)
for (i = 0; i < d; i++)
if (x[ i ] < x[i+1])
{
temp = x[ i ];
x[ i ] = x[i+1];
x[i+1] = temp;
}
printf("\n\nLe tableau a été trié en ordre descendant :\n\n");
for (i = 0; i <= last; i++)
{
printf("%d\t", x[ i ]);
if (i && (!(i % 8)))
printf("\n");
}
}
}
}

Répondre à kamgamartins

5

w1sm3rhi11, le 3 oct 2007 à 16:53:25

Salut,

Je te mets ici le lien vers une de mes sources si jamais ca peut te servir : http://www.cppfrance.com/...

Répondre à w1sm3rhi11

6

tahtouha, le 15 déc 2007 à 15:08:11

Slt tt le monde chui tahtouha etudiante (bac informatique )
j'ai un prb avec l'algorithme offf é surtout tri shell j'ai rien comprie :'(

Répondre à tahtouha

12

coucou_hb21, le 15 déc 2007 à 21:59:59

Moi aussi je suis en bac info :
pour le tri shell cé facile mais il faut juste la concentration :
tous d'abord on dois chercher le "pas" et d'aprés le pas on peut trier le tableau et a un certain moment le tri shell va étre eliminer et on va terminer avec le tri par insertion
(je sais que tu n'a pas compris mais essaye)

conclusion: le tri shell est un moyen de tri mais ce n'est pas un tri total, il permet juste d'avoir un demi tri c'est à dire un tri qui permet de mettre les entiers les plus petites ensembles (si on a le pas=4 alors les quatres premiers nombres sont les plus petits et les quatres suivants sont les plus grands ......................)

il ya une formule que tu dois l'apprendre et c'est la plus courament utilisée pour calculer la valeur des pas succesives :
Un+1 = 3* Un +1
avec U1= 0
la version qui est proposé dans ce cours prefert calcluer, à l'aide de la formule donnée si dessus, la plus grande pas p ( tels que p< n) .
pour trouver les autres valeurs succesives de p, il suffit à chaque étape de diviser p par 3 ( division entiére)
RP: le p c'est le pas.
exemple: chercher les grandes successives de p pour n=100.
* calcul du plus grande valeur de P tels que (P<100)
U1 =0
U2= 3*U1 +1 = 1
U3= 3* U2 +1 = 4
U4= 3*U +1 = 13
U5 = 3*U4 +1 = 40
U6 = 3* U5 +1 =121 ( elliminer car on on p<100)
donc notre p est le 40.
maintenant on va chercher le nombre de p :
p1= 40
p2 = 40 div 3 =13
p3 = 13 div3 =4
p4= 4 div 3 =1
p5 il n'ya pas .
(compris ou non ?)
maintenant on va trier un tableau à l'aide de tri schell:
prenons un tableau de10 cases portant des différents valeurs ( tableau non trié)
d'abord on va comparer t[1] avec t[5] car on a le pas = 4 et notre tableau de 10 élements
ok
si on trouve que t[5] est plus petit que t[1] on permute
sinon on passe dans la deuxiéme case : la méme chose
jusqu'à arriver à la derniere case c'est à dire t[10]
enfin si on a arrivé à la case 10, on aura pas besoin de tri shell mais le tri par insertion pour pouvoir terminer le tri.

espérant que tu a compris : cé facil concentre toi
prenez un tableau est essayé tu va le comprendre.
ok
si tu as besoin d'autre choise demande la.
coucou_hb20@hotmail.com
a++++++++++

Répondre à coucou_hb21

7

Polux31, le 15 déc 2007 à 15:10:45
  • +1

Bonjour ... mdrrr x 10 ... vous avez vu la date du 1er post ..

tahtouha, un conseil ouvre un autre post

;o)

Polux

Répondre à Polux31

8

tahtouha, le 15 déc 2007 à 15:13:35

Pk

Répondre à tahtouha

9

Polux31, le 15 déc 2007 à 15:15:31

Pour rien :os

Répondre à Polux31

10

Qwerti, le 15 déc 2007 à 15:15:49

vous avez vu la date du 1er post ..

Indiana Jones is back.

:-D

Répondre à Qwerti

11

tahtouha, le 15 déc 2007 à 15:16:29

ö,ö
\_/

Répondre à tahtouha

13

asma, le 13 jan 2008 à 19:39:02

Salut c'est asma

Répondre à asma

16

 badi, le 13 jan 2009 à 12:25:57

C'est quoi ton probleme asma

Répondre à badi

14

Polux31, le 15 jan 2008 à 00:27:16

Enchanté ... moi polux ... toi asma ?

:o)

Répondre à Polux31

15

info_dridi , le 21 fév 2008 à 16:54:18

Ce programme permet de trié un tableau croissonte avec le tri insertion version récursif
PROGRAM TRI;
USES WINCRT ;
TYPE
TAB=array[1..100]of integer;
var
n,i:integer;
t:tab;
procedure insert( a:integer;var t:tab; m:integer);
begin
while((a< t[m] )and (m >= 1) )do
begin
t[m+1]:= t[m];
m:=m-1;
end;
t[m+1]:=a;
end;
procedure trinsert( var t:tab;n:integer);
begin
if n>1 then
begin
trinsert( t,n-1);
insert(t[n],t,n-1);
end;
end;

begin
writeln(' donner le nbr delement du tableau ');
read(n);
for i:=1 to n do
begin
writeln(' dooner le vleur de ',i,':');
read(t[i]);

end;
trinsert(t,n);

for i:=1 to n do
writeln( t[i]);

end.

Répondre à info_dridi