Pages vues depuis 25/07/2007 : 25 251 384
Index du forum »» Création-Développement »» J'ai besoin d'aide
Function tri_rapide(tableau, premier, dernier)
If premier < dernier
Local pivot = choix_pivot(tableau, premier, dernier)
pivot = partitionner(tableau, premier, dernier, pivot)
tri_rapide(tableau, premier, pivot-1)
tri_rapide(tableau, pivot+1, dernier)
EndIf
EndFunction
Function choix_pivot(tableau, premier, dernier)
; on choisit toujours le premier élément comme pivot
return(premier)
EndFunction
Function partitionner(tableau, premier, dernier, pivot)
echanger(tableau, pivot, dernier)
Local j = premier
For Local i = premier to dernier-1
If tableau[i].PZM <= tableau[j].PZM
echanger(tableau, i, j)
Add(j,1)
Next
echanger(tableau, dernier, j)
Return(j)
EndFunction
Function echanger(tableau, index1, index2)
; on mémorise les valeurs liées à index 1
Local PZM = tableau[index1].PZM
Local X = tableau[index1].X
Local Y = tableau[index1].Y
Local D = tableau[index1].D
; on recopie les valeurs liées à index2 dans index1
tableau[index1].PZM = tableau[index2].PZM
tableau[index1].X = tableau[index2].X
tableau[index1].Y = tableau[index2].Y
tableau[index1].D = tableau[index2].D
; on recopie les valeurs mémorisées dans index2
tableau[index2].PZM = PZM
tableau[index2].X = X
tableau[index2].Y = Y
tableau[index2].D = D
EndFunction
tri_rapide(PT, 0, 95)