L'algorythme de tri le plus simple n'est pas le tri bulle. C'est celui-ci :
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : GnomeSort exemple
; File : GnomeSort Algorythm.pb
; File Version : 1.0.0
; Programmation : OK
; Programmed by : Guimauve
; Date : 18-11-2006
; Last Update : 18-11-2006
; Coded for PureBasic V4.00
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; The most simple sorting algorythm is not the
; BubbleSort. The GnomeSort is the most simple
; routine possible. In big O notation :
;
; BubbleSort O(ln n²)
; GnomeSort O(ln n³)
;
; So the Gnome Sort is very efficient on array
; very small array n < 5. Otherwise you will
; destroy your computer !!!
;
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< GnomeSort Ascendant <<<<<
Procedure GnomeSortAscendant(Array.l(1))
Index = 0
Size = PeekL(@Array() - 8)
While Index < Size
If Index = 0 Or Array(Index - 1) <= Array(Index)
Index + 1
Else
Swap Array(Index - 1), Array(Index)
Index - 1
EndIf
Wend
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< GnomeSort Descendant <<<<<
Procedure GnomeSortDescendant(Array.l(1))
Index = 0
Size = PeekL(@Array() - 8)
While Index < Size
If Index = 0 Or Array(Index - 1) >= Array(Index)
Index + 1
Else
Swap Array(Index - 1), Array(Index)
Index - 1
EndIf
Wend
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dim Original.l(10)
Dim Alpha.l(10)
Dim Beta.l(10)
Macro DebugArray()
Debug "Original() : Alpha() : Beta()"
For Index = 0 To 10
Debug RSet(Str(Original(Index)),2,"0") + " : " + RSet(Str(Alpha(Index)),2,"0") + " : " + RSet(Str(Beta(Index)),2,"0")
Next
EndMacro
For Index = 0 To 10
Original(Index) = Random(30)+5
Alpha(Index) = Original(Index)
Beta(Index) = Original(Index)
Next
Debug "----------------------------------------------------"
Debug "Before GnomeSort"
Debug "----------------------------------------------------"
DebugArray()
Debug "----------------------------------------------------"
Debug "After GnomeSort : "
Debug "Alpha Ascendent "
Debug "Beta Descendant"
Debug "----------------------------------------------------"
GnomeSortAscendant(Alpha())
GnomeSortDescendant(Beta())
DebugArray()
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
A+
Guimauve