Hi,
der Ansatz ein "Array of Record" zu verwenden ist schon relativ gut, allerdings sollte man vermeiden alle Elemente des Arrays zu vertauschen. Beim Vertauschen müßte man theoretisch 3 mal "umkopieren" (und das für jedes Element in der Daten-Struktur) sofern man sich an "Bubblesort" orientiert. Solche Kopiervorgänge sind absolut unnötig und kosten nur unnötig Zeit. Auch soetwas mit anderen Sortieralgorithmen zu machen, ist Schwachsinn.
Wie verhindert man nun, das unnötige umkopieren?
Indem man Zeiger (Pointer) benutzt. Zeiger sind grob gesagt "Speicheradressen".
Man merkt sich also den Speicherort jedes Elements im Array und sortiert dann nur noch die Adressreihenfolge.
PS: Kein Kommentar zu weiteren^^...