Ich verwende ein etwas anderes BubbleSort.
Hintergrund:
Nach dem Durchlauf der For ... Schleife steht das größte Element am Ende des Arrays.
Also muss beim nächsten Durchlauf das vorletzte Element nicht mehr mit dem letzten Element verglichen werden.
Das verringert die Anzahl der zu vergleichenden Elemente bei jedem Durchlauf um 1.
Guter Einwand
Sollte dann aber am Anfang vermutlich
Last := High(A) - 1
sein, sonst kracht es beim Zugriff auf
A[I + 1]
.