And then there's sometimes a need for a "sort name" value. When I have upstream data consisting of separate first name and last name fields, my function to generate a sort name is to concatenate last name and first name, and then keep only letters. That way, apostrophes, dashes, spaces, etc. don't influence sorting whatsoever.
It seems quite tricky to deduce a sort string when you're only storing full name and short name... should the user be asked to provide this?
I don't mean to ask about or promote any particular sort algorithm. Rather, I'm discussing the transformation of a name into a "sort string," which will then be sorted (the algorithm you mention being a fine choice for this) after said transformation. Given discrete first/last fields, the transformation I mentioned works well for my purposes, but if I didn't have those particular discrete fields (instead having full/short fields) then it would be quite difficult, likely needing the user to weigh in, which I think is an atypical UX.