Ich weiß jetzt nicht, was Franks QSort so macht, aber wenn die Reihenfolge der Elemente in der Liste geändert werden darf, würde ich auf jeden Fall Shellsort vorschlagen. Das sollte bei der Datenmenge das schnellste Verfahren sein.
Baue doch einfach mal ein paar Cardinals ein und ermittle den TickCount. Dann weißt du, an welcher Stelle du am Besten optimieren solltest.
Edit: Noch was. Was machst du denn mit den Adressen? Falls du vorhast, sie anschließend in eine
DB einzulesen, dann spar dir doch das Bearbeiten der Datei und mach die Logik lieber mit der
DB.