[TUTO] Trier un tableau

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

[TUTO] Trier un tableau

Message par microdevweb »

Voici quelques algorithmes de tri

Nb: Ceci est un transposition de code C, donc je n'ai pas utilisé la fonction swap :wink:

1) Le tri par permutation (buble sort)

Code : Tout sélectionner

; Tri par permutation Buble sort
Procedure BubleSort(Array v.i(1),n)  
  Protected sent.b=0,i=0,E
  While (n<>1 And sent=0)
    sent=1
    For i=0 To n-2
      If(v(i)>v(i+1))
        E=v(i)
        v(i)=v(i+1)
        v(i+1)=E
        sent=0
      EndIf
    Next
    n-1
  Wend
EndProcedure
Procedure Affiche(Array v.i(1),n)
  Protected i
  For i=0 To n-1
    Debug "Vecteur "+Str(i)+" : "+Str(v(i))
  Next
EndProcedure
; Un tableau pour le teste
Dim v.i(100)
v(0)=85
v(1)=2
v(2)=8
v(3)=5
v(4)=-8
v(5)=36
v(6)=14
v(7)=6
v(8)=-7
v(9)=57
Define n.i=10
Debug "Vecteur non-trié:"
Affiche(v(),n)
BubleSort(v(),n)
Debug "Vecteur trié:"
Affiche(v(),n)
2) Le tri par insertion

Code : Tout sélectionner

; Tri par insertion
Procedure InsertionSort(Array v.i(1),n)  
  Protected x.i,j,i
  For j=n-2 To 0 Step -1
    x=v(j)
    i=j+1
    While(i<n And x>v(i))
      v(i-1)=v(i)
      i+1
    Wend  
    v(i-1)=x
  Next
EndProcedure
Procedure Affiche(Array v.i(1),n)
  Protected i
  For i=0 To n-1
    Debug "Vecteur "+Str(i)+" : "+Str(v(i))
  Next
EndProcedure
; Un tableau pour le teste
Dim v.i(100)
v(0)=85
v(1)=2
v(2)=8
v(3)=5
v(4)=-8
v(5)=36
v(6)=14
v(7)=6
v(8)=-7
v(9)=57
Define n.i=10
Debug "Vecteur non-trié:"
Affiche(v(),n)
InsertionSort(v(),n)
Debug "Vecteur trié:"
Affiche(v(),n)
(a suivre...)
3) Le tri par tas heap sort
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège