Rechercher : dans
Par :

Algorithme de tri

Dernière réponse le 25 jan 2009 à 14:12:25 ammouna, le 15 jui 2008 à 16:48:57 
 Signaler ce message aux modérateurs

Bonjour,
je veux savoir l'ordre de complexité des différents algorithmes de tri et surtout celle de lalgorithme de tri par insertion et parsélection!
merci d'avance

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « algorithme de tri » 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

lalilu, le 15 jui 2008 à 17:00:15
  • +1

Salut,
tri par insertion
sélection
insertion dichotomique
par bulles --> les 4 ont une complexité de On²
cependant, le tri par bulles est plus lent que les autres et le tri par insertion dichotomique est plus rapide (bien que pour les 4 on reste dans le même ordre de grandeur.

tri rapide (quick sort) --> complexité = nlog(n) donc beaucoup plus rapide.

ce sont les seuls algos que je connaisse
bon courage

Répondre à lalilu

3

ammouna, le 15 jui 2008 à 18:51:31
  • +1

Salut
merci beaucoup pour votre aide!

Répondre à ammouna

2

KX, le 15 jui 2008 à 17:14:12
  • +1

D'un point de vue efficacité, on ne peut pas faire mieux qu'un tri avec une complexité en O(n.log n)

Le tri par fusion permet, d'atteindre cette efficacité dans tout les cas, mais il utilise plus de mémoire que les autres tris (ce qui en soit n'est presque plus un problème)

Par contre j'ai entendu dire que la complexité en O( n.log n ) du quick sort, était une "publicité mensongère" car selon les cas sa complexité atteindrait O( n² ) La confiance n'exclut pas le contrôle

Répondre à KX

4

haydens, le 20 nov 2008 à 23:24:29

En effet le trie rapide peut etre en n² dans le pire des cas (malheuresement ce pire des cas arrive) souvent, donc on prend notre liste on "fou le bordel" et la c'est efficace en gros.
"foutre le bordel" prend n calcule donc on reste en lon au final

plus d'information sur : http://fr.wikipedia.org/wiki/Tri_rapide

Répondre à haydens

5

ramrouma, le 17 jan 2009 à 14:42:06
  • +1

Bonjour a propos tri par selection j vé te donner une solution voila=
procedure trier (var t:tab;n:integer);
var c,m:integer;
begin
for i:=1 to n-1 do
begin
m:=masc (t,c,n);
if(m<>c) then permuter(c,m,t);
end;
end;

a propos de tri par insertion jé un programme pret pour toi voila=
program triage;
uses wincrt;
type tab = array [1..100] of integer;

procedure saisir (var n:integer );
begin
writeln('donner la dimensin du tableau');
readln(n);
end;

procedure remplir (var t:tab; n:integer);
var i:integer;
begin
for i:=1 to n do
readln(t[i]);
end;

procedure decaler (var t:tab;ind: integer; var p:integer);
var aux,i:integer;
sup:boolean;
begin
aux:=t[ind+1];
i:= ind;
sup:=true;
while ((i>=1) and (sup= true)) do
begin
if (t[i]>aux) then
begin
t[i+1]:=t[i];
i:=i-1;
end
else sup:= false;
end;
p:=i+1;
end;

procedure trie (var t:tab; n: integer);
var c,tmp,ind,p:integer;
begin
for c:= 2 to n do
begin
tmp:= t[c];
decaler (t,c-1,p);
t[p]:=tmp;
end;
end;

procedure afficher (var t:tab; n: integer);
var i: integer;
begin
for i:=1 to n do
writeln (t[i]);
end;

var i,aux,n,ind,p,c:integer;
t:tab;
sup: boolean;
begin
saisir(n);
remplir(t,n);
trie(t,n);
afficher(t,n);
end.

tu peut l'utiliser si tu veut et bon chance ammouna by

Répondre à ramrouma

6

 ammouna, le 25 jan 2009 à 14:12:25

Salut!
Merci beaucoup ramrouma pour l'aide que tu ma donné pour les programmes de tri!
bon courage à toi!

Répondre à ammouna