In sorting you have 4 parameters to consider (at least):
1) Overall run time
2) Number of swaps (and whether you want to swap data or just pointers/indexes).
3) Number of comparisons made.
4) Do you need a "stable" sort, where the names that are *equal* and now rank higher in the list, remain in that higher position (relative to lower equals), after the sort is done?
#1 is influenced strongly by #2 and #3, but algorithm efficiency and locality of reference trumps #2 and #3 - generally.
#2 bites you when the data is a large struc or stringt and you need to actually move them, instead of just an index or pointer to that struct or string.
#3 If you're on a network, and every comparison has to be called up with a substantial delay factor, then comparisons are a real factor to keep in mind. Otherwise, who cares?
#4 Some sorts can be done while the data is still being accessed, if it is a "stable' sort (like Insertion sort). Other sorting algorithms may be much faster, but need to be done when the dbase being sorted, is off-line.
Selection sort and Insertion sort are well known for their low number of comparisons or swaps. I'll leave it to you to figure out which does the fewest of what.