Bonjour,
slt tt le monde , donc je cherche un programme pr implémenter un tri par tas en préparant une interface graphique
(mode texte ) genre des case qui illute toutes les étpaes de tri d'un tableau en entrée sur le tas
SVP aidez moiiiiiiiiiiiiii
MERCIII
un tri par tas en c
Re: un tri par tas en c
J'ai trouvé un algo sur wikipedia : http://fr.wikipedia.org/wiki/Tri_par_tas
que j'ai traduit en PB:
Ça fonctionne à condition que la borne inférieure du tableau soit égal à 1.
Il faudrait regarder de plus près l'algo pour que ça fonctionne avec la borne inférieure égal à zéro.
Mesa.
que j'ai traduit en PB:
Code : Tout sélectionner
Procedure tamiser(Array arbre(1),noeud,n) ; 1= Tableau à 1 dimension
;descend arbre(noeud) à sa place, sans dépasser l'indice n
Protected k, j, i
k=noeud
j=2*k
While j<=n
If j<n And arbre(j)<arbre(j+1)
j=j+1
EndIf
If arbre(k)<arbre(j)
Swap arbre(k) , arbre(j)
k=j
j=2*k
Else
Break
EndIf
Wend
EndProcedure
Procedure tri_par_tas(Array arbre(1), longueur)
Protected i ; Problème avec i=0
For i=longueur/2 To 1 Step -1
tamiser(arbre(),i,longueur)
Next i
For i=longueur To 2 Step -1
Swap arbre(i) , arbre(1)
tamiser(arbre(),1,i-1)
Next i
EndProcedure
;=====================
Dim arbre(10)
;Remplir tableau avec nombres aléatoires
For i=1 To 9
arbre(i)=Random(100 ,0)
Next i
;Afficher tableau
For i=1 To 9
Debug arbre(i)
Next i
Debug "========================"
;Tri par tas
tri_par_tas(arbre(), ArraySize(arbre()))
;Afficher tableau trié
For i=1 To 9
Debug arbre(i)
Next i
Il faudrait regarder de plus près l'algo pour que ça fonctionne avec la borne inférieure égal à zéro.
Mesa.
Re: un tri par tas en c
g un prob avec la déclaration de Procedure tamiser(Array arbre(1),noeud,n) en langage c ??
Re: un tri par tas en c
t'es sur un Forum Purebasic pas Camoula222 a écrit :en langage c ??

tu trouvera surement ton beurre sur le NEt, c'est pas les Forums consacré au C qui manquent ....