Enumérer les arrangements possibles d'un tableau

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 359 fois - Téléchargée 7 fois

Contenu du snippet

' Enumére les arrangements possibles d'un tableau
'  values: Tableau contenant les éléments
Public Sub Permutation(ByRef values() As Integer)
  Call PermutationRec(values, 0, UBound(values))
End Sub

' Enumére les arrangements possibles d'un tableau
'  values: Tableau contenant les éléments
'  start: Index de l'élément de départ
Public Sub PermutationS(ByRef values() As Integer, ByVal start As Long)
  If start < LBound(values) Or start > UBound(values) Then
    Err.Raise 9
  Else
    Call PermutationRec(values, start, UBound(values))
  End If
End Sub

' Enumére les arrangements possibles d'un tableau
'  values: Tableau contenant les éléments
'  start: Index de l'élément de départ
'  length: Nombre d'éléments à prendre en compte
Public Sub PermutationSL(ByRef values() As Integer, ByVal start As Long, ByVal length As Long)
  If start < LBound(values) Or start > UBound(values) Then
    Err.Raise 9
  ElseIf length < 1 Or length > UBound(values) - start + 1 Then
    Err.Raise 9
  Else
    Call PermutationRec(values, start, start + length - 1)
  End If
End Sub

Private Sub PermutationRec(ByRef values() As Integer, ByVal startpos As Long, ByVal endpos As Long)
  Dim i As Long, j As Long
  Dim tmp As Variant

  ' ToDo: Arrivée d'une permutation possible, ajoutez les instruction ici

  For i = startpos To endpos
    For j = i + 1 To endpos
      tmp = values(i)
      values(i) = values(j)
      values(j) = tmp
      Call PermutationRec(values, i + 1, endpos)
      values(j) = values(i)
      values(i) = tmp
  Next j, i
End Sub


Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.