Quali sono le chiavi su cui eseguire l'ordinamento, e quale "priorità" hanno? (dubito che devi ordinare prendendo come chiave l'intera riga, più probabilmente dovrai ordinare prima in base al nome, poi tra gli omonimi in base al numero, ecc.).
Comunque, se la chiave primaria (la prima su cui esegui l'ordinamento) è una stringa, ti conviene usare un ordinamento per indici, ovvero in un vettore hai i record, ma tu ne ordini un altro che contiene gli indici del primo vettore. Fatto ciò, ovviamente con un algoritmo efficente tipo il quicksort, puoi ordinare le altre chiavi anche solo con l'insertion sort, che è molto efficiente se applicato a insiemi quasi ordinati.
ciao