Fundamental Algorithms III
lion137.blogspot.com
lion137.blogspot.com
You're comparing it with something that is almost the textbook example of subjective.
Other cases include the comparison function for a sort algorithm, where I expect "l" and "r" for left and right, and the sort function itself I expect to see "a" for array, "c" for comparison function, "s" for swap function.
But when the variables don't really make much sense, or there is no existing convention, then there should at least be a key present for what each variable means.
I feel like your other examples are less obvious though. And I don't see much disadvantage to using full-length names in those circumstances (e.g. left, right, arr, compare, and swap)
Single letter variables are perfectly OK in a mathematical context such as this one. They are arguably better.
The code would be much clearer, however, with lots of comments on what each variable means.
Meaningful variable names that are used more than once break the "do not repeat yourself" rule.
the do not repeat yourself rule isn't about saving typing, its about reducing points of failure in code - i.e. one code path and one place to fix a bug instead of n.
variable naming has nothing to do with that.