Nb: Ceci est un transposition de code C, donc je n'ai pas utilisé la fonction swap
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)
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)
3) Le tri par tas heap sort